Концепция Android / Java для вызова всех методов getter с помощью одного цикла - PullRequest
0 голосов
/ 13 декабря 2011

Я выполняю задание и застрял на этом этапе: у меня есть класс, в котором у меня есть 30 методов получения и установки.

  public class example{

public String get1(){
 return someString1;
}

public String get2(){
return someString1;
}

public String get3(){
return someString4;
}

and so on...

public String get30(){
return someString30;
}

}

Теперь я хочу вызвать весь метод получения с помощью одного цикла, например

for(int i= 1; i<=30;i++){
// String total = get1()+get2()+get3()...............
}

что мне делать?

Редактировать: я сделал это, используя отражение:

http://docs.oracle.com/javase/tutorial/reflect/member/methodInvocation.html

Спасибо, Рики

Ответы [ 4 ]

5 голосов
/ 13 декабря 2011

Комментированный код - единственный способ сделать это. Но это признак того, что ваш дизайн неверен. Вместо того, чтобы иметь 30 свойств типа String, у вас обязательно должно быть одно свойство типа String[] или List<String>.

Тогда вы можете сделать:

List<String> list = getListOfStrings();
StringBuilder builder = new StringBuilder();
for (String s : list) {
    builder.append(s);
}
String concatenation = builder.toString();
2 голосов
/ 13 декабря 2011

Если это стандартные методы доступа, то лучше перейти на List и сделать get(index)

еще поможет взломать Reflection

public class Example{

  private List<Integer> marks = new ArrayList<Integer>();

сейчас цикл

for(int i= 1; i<=30;i++){
   total += marks.get(i);
}
0 голосов
/ 27 января 2012

Я сделал это с помощью отражения:

http://docs.oracle.com/javase/tutorial/reflect/member/methodInvocation.html

0 голосов
/ 13 декабря 2011

Просто переопределите метод toString () в примере класса следующим образом:

@Override
public String toString() {
  return someString1 + "  " + someString2 + "  " + someString3;
}
...