Что лучший способ состоит в том, чтобы организовать код Java, так как Вы не можете передать ссылкой?

Я изучаю, как кодировать в Java после того, как после прибытия из C. В C я всегда разделял все на отдельные функции для создания кода легче следовать и отредактировать. Я пытался сделать это в Java, но теперь так как я понял, что Вы не можете использовать указатели, я немного смущен относительно того, каково лучший способ сделать это.

Так, например, я хочу иметь метод, который создает четыре предупреждения для меня. Таким образом, я передаю его внимательный разработчик, который может затем создать предупреждения. Я могу возвратить их в массиве, но в моем коде мне уже назвали предупреждения индивидуально, и я хотел бы сохранить его тем путем, таким образом, я не должен буду называть их предупреждением [1], предупреждение [2]... и т.д.

Таким образом, это означает, что я должен был бы переименовать их, которые добавят дополнительный код, который, вероятно, был бы длиннее, чем код в фактическом методе!

Я думаю об этом правильный путь?Я могу что-нибудь сделать?

Править-

        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setMessage(this.getString(R.string.ache_Q_text))
               .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {dialog.cancel();}
               });

        final AlertDialog ache_Q_alert = builder.create();

        builder.setMessage(this.getString(R.string.food_Q_text));
        final AlertDialog food_Q_alert = builder.create();

        builder.setMessage(this.getString(R.string.event_Q_text));
        final AlertDialog event_Q_alert = builder.create();

        builder.setMessage(this.getString(R.string.ache_Q_text));
        final AlertDialog ache_type_Q_alert = builder.create();

и вместо этого замените его

createAlerts();

и имейте тот код прочь где-нибудь стороне.

5
задан IAdapter 13 June 2010 в 20:15
поделиться

4 ответа

Похоже, вы хотите, чтобы метод создал для вас четыре объекта и вернул их. У вас есть несколько вариантов:

1. Модифицировать метод, чтобы он создавал только один объект, и вызвать его четыре раза, например,

Alert foo = createOneAlert(x,y,z);
Alert bar = createOneAlert(a,b,c);
// etc.

2. Создать структуру данных для хранения ваших предупреждений:

public class Alerts {
  private final Alert foo;
  private final Alert bar;
  private final Alert baz;
  private final Alert quux;

  public Alerts(Alert foo, Alert bar, Alert baz, Alert quux) {
    this.foo = foo;
    this.bar = bar;
    this.baz = baz;
    this.quux = quux;
  }

  public Alert getFoo() { return foo; }
  // etc.

}

public Alerts makeAlerts(AlertBuilder builder) {
  return new Alerts(
    builder.buildAlert(a,b,c),
    builder.buildAlert(d,e,f),
    builder.buildAlert(g,h,i),
    builder.buildAlert(x,y,z));  
}

Это может быть более многословным, но а) это Java и б) многословность может быть хорошей вещью

.
6
ответ дан 14 December 2019 в 08:42
поделиться

Я бы заключил эти предупреждения в класс предупреждений. В зависимости от разницы, как объекты одного класса или как 4 разных класса.

Затем вы можете передать эти объекты своей функции для их инициализации.

Тогда структура вашего не могла бы сильно измениться.

В Javaland это не так, но он показывает, почему отсутствие указателей не создает серьезных проблем. В Java классы в основном настраиваются в их конструкторе, поэтому полный жизненный цикл создания, работы и уничтожения инкапсулируется в классе. (Это что-то вроде приближения). Это позволяет классу «скрывать» детали реализации от внешнего мира, что помогает создавать более надежные приложения.

0
ответ дан 14 December 2019 в 08:42
поделиться

Связаны ли эти четыре предупреждения? Не могли бы вы создать соответствующий класс, который инкапсулирует четыре из них, включая код для их создания?

Я редко нахожу, что мне нужен метод для возврата нескольких несвязанных элементов - хотя я иногда скучаю по C # out параметры для таких вещей, как int.TryParse (где метод может «дать сбой» неисключительным образом).

1
ответ дан 14 December 2019 в 08:42
поделиться

Здесь есть несколько хороших ответов, особенно davetron5000.

Другой вариант - передать список (или другую коллекцию) в метод createAlerts (); - также с построителем или без него. Может быть, что-то вроде:

List<Alert> alerts = new ArrayList<Alert>();
createAlerts(builder, alerts);
...

private void createAlerts(AlertBuilder builder, List<Alert> alerts) {
    alerts.add(builder.buildAlert(a,b,c));
    alerts.add(builder.buildAlert(d,e,f));
    alerts.add(builder.buildAlert(g,h,i));
    alerts.add(builder.buildAlert(x,y,z));
}

Вы также можете надеть шляпу Spring и связать все предупреждения в XML, а затем внедрить их как коллекцию.

0
ответ дан 14 December 2019 в 08:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: