Есть способ, использующий отражение:
try{
Method m= object.getClass().getMethod("getField"+String.valueOf(i), new Class[]{});
fields+=(String)m.invoke(object);
}catch(...){...}
Тем не менее:
Этот бизнес все пахнет плохой практикой кодирования!
Разве вы не можете переписать все getFieldN()
методы, подобные этим?
String getField(int fieldNum)
Вы напрашиваетесь на неприятности, создавая пронумерованные методы. Помните, что рефлексия медленная и должна использоваться только тогда, когда вызовы метода на основе строк абсолютно необходимы для потока вашей программы. Я иногда использую эту технику для пользовательских скриптовых языков, где вам нужно получить метод по имени . Это совсем не так, ваши звонки целочисленные . Поэтому вам следует сохранить целое число в качестве параметра.
Если это унаследованный код, и вы абсолютно не можете изменить это плохое кодирование, то вам может быть лучше создать новый метод getMethod(int)
, как описано выше, чтобы обернуть существующие методы, который просто делегирует пронумерованным getMethodN()
методам. .