Как назвать методы вызова с содержимым строки
Как мне вызвать метод с содержимым строки? Я сказал 4 строки:
swimming
football
rugby
hockey
И у меня также есть 4 метода под названием:
swimming
football
rugby
hockey
У меня есть представление списка с этими строками, заполняющими представление списка (это всего лишь пример, у меня фактически есть представление списка с 200 строками) Итак, для 200 строк вместо написания оператора if:
if(string.equals("Swimming")){swimming();}
Можно ли как-нибудь сделать так, чтобы у меня был один метод onclick, который при щелчке элемента в просмотре списка запускал что-то вроде:
[string]();
Где [строка] - это некоторый код для получения строки, выбранной из списка.
в основном, чтобы сэкономить на написании 200 операторов if, могу ли я получить его, чтобы он автоматически запускал метод, названный в честь строки?
4 ответа
Исправлено с обработкой ошибок:
try
{
String string = "swimming";
MyActivity.class.getMethod(string, null).invoke(this, null);
}
catch(Throwable t)
{
t.printStackTrace(); // might want to do something else here
}
Используйте отражение.
String type = "swimming";
Method m = this.getClass().getDeclaredMethod(type, null);
m.invoke(this, null);
Вы можете сделать тэд с отражением. Для получения дополнительной информации посмотрите этот пост: Как вызвать метод Java, если имя метода указано в виде строки?
Вам нужно будет использовать отражение, чтобы сделать это. Вместо того, чтобы напечатать полный пример, этот пост SO и принятый ответ содержат все детали, которые вам понадобятся для его реализации. Обратите внимание, что использование отражения связано с накладными расходами, и на мобильном устройстве стоимость будет выше. Если бы вы могли поделиться более подробной информацией о том, что вы пытаетесь сделать, возможно, было бы более элегантное решение более крупной проблемы, которую вы пытаетесь решить.