Android, не вводите имя объекта для каждого из его свойств в методе? - PullRequest
0 голосов
/ 24 ноября 2010

У меня есть экземпляр объекта myClass, и мне нужно установить значение около 30 переменных в объекте, и мне нужно сделать это около 30 раз (в 30 методах) в моем классе.1003 * Есть ли способ, которым я могу уберечь себя от необходимости набирать «myClass».900 раз?

Ответы [ 3 ]

2 голосов
/ 24 ноября 2010

Если у вас есть 30 переменных, которые нужно установить, у вас есть 30 переменных, которые нужно установить.Вы могли бы создать некоторые функции, которые позволят вам установить связанные группы элементов за один вызов.

public void setStuffAboutThings(int a, int b, int c, int d, int e, int f) {
   vOne = a;
   vTwo = b;
   vThree = c;
   vFour = d;
   vFive = f;
}

...

MyClass.setStuffAboutThings(10, 20, 30, 40, 50);

Но на самом деле, когда дело доходит до этого, если вам нужно установить 30 переменных, вы должны установить 30 переменных,Вы также можете набрать все переменные-члены, которые вы хотите установить, а затем использовать редактор, который поддерживает режим редактирования текста на основе столбцов, и просто вставить «MyClass» 30 раз за раз.

В зависимости от ваших данных, возможно, вывместо этого можно создать массив, список или хэш и установить в него значения, используя какой-то цикл.

Не зная дополнительных подробностей, вы действительно не сможете направить вас.

0 голосов
/ 24 ноября 2010

Если я правильно понимаю, вы ищете конструкцию, аналогичную VB With. Java не имеет такой конструкции, поскольку обычно считается плохой практикой, поскольку она скрывает ваш код исключительно для сохранения нажатий клавиш.

Вы можете рассмотреть две альтернативы:

  1. Запишите короткий макрос в IDE
  2. Перед выполнением операций с массовым свойством вы можете сократить имя вашего объекта до односимвольного имени. Это все еще неясно, но настолько близко, насколько вы можете, к тому, что вы ищете.
0 голосов
/ 24 ноября 2010

Напишите в своем классе метод, который вы будете вызывать из других мест. Что-то вроде:

public void init(List<Object> args) {
   vOne = args.get(0);
   vTwo = args.get(1);
   ...
}

и код клиента:

List<Object> args = new ArrayList<Object>(30);
args.add(1);
args.add(2);
...
myClass.init(args);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...