Можно ли хранить значения функций в хеш-таблице? - PullRequest
0 голосов
/ 24 октября 2011

Я хочу сохранить функции как значения в HashTable для моего устройства Android.Это возможно?

Ответы [ 3 ]

2 голосов
/ 24 октября 2011

Да, вы можете сделать это, используя то, что называется Отражение . Вы бы создали что-то вроде HashTable, например:

HashTable<String, Method> functionsMap = new HashTable<String, Method>;

Подробнее о методе .

Тем не менее, отражение, как правило, плохая идея. Когда вы чувствуете необходимость использовать Reflection, вы должны спросить себя: «Мне действительно нужно делать что-то таким образом? Есть ли способ, которым я могу достичь того, что я пытаюсь сделать, с помощью рефлексии?». Если после долгих размышлений в течение нескольких минут ответ на ваш вопрос по-прежнему звучит так: «Да, мне нужно размышление», продолжайте и используйте его.

0 голосов
/ 25 октября 2011

Начиная с Java7, вы можете создавать MethodHandles для представления функций (методов).И, конечно, вы можете хранить их где угодно, включая Hashtables.

0 голосов
/ 24 октября 2011

Нет, Java не позволяет этого. То, что вы могли бы сделать, - это создать некоторый интерфейс, который позволит вам предоставлять пользовательские реализации конкретного метода.

Например

public interface CustomerHandler{
  public void handle();
}

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

HashMap<String, CustomHandler> map = new HashMap<String, CustomHandler>();
//add objects
map.get("some_handler").handle();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...