В Java существует ли способ эмулировать функции первого класса в lua и python, например здесь?Java имитирует первоклассные функции
def foo():
print "foo called"
bar = foo
bar() #output from this line is "foo called"
Или это единственный способ иметь оператор switch с различными методами в каждом случае?
Редактировать: спасибо за разъяснение, я хочу спросить, есть ли способ создать ссылку на функцию и называть ее так, как если бы это была функция.
Кроме того, целью является не вызов определенной реализации функции, она выбирает, какую функцию вызывать, выбор которой может быть совершенно иным. Причина, по которой я хочу сделать это, - это иметь более общий класс, который не нужно редактировать для добавления функциональности. Это похоже на включение функций в коллекцию или список.
Редактировать2: для кого-либо, рассматривающего этот вопрос с целью найти ответ на него: Это касается стеков и кучей. Java не может этого сделать, потому что его методы хранятся в стеке, что намного жестче, чем куча. Однако Python сохраняет свои функции в куче, ссылаясь на них в стеке. Поскольку функции вызывается через ссылку в python, вы можете изменить ссылку на них и использовать по желанию.
Что вы теперь включили? Чаще всего это можно сделать с помощью 'enum'. –
Вот несколько [литература] (http://stackoverflow.com/questions/40480/is-java-pass-by-reference) для вас. – Mena
no, создать интерфейс и реализовать несколько реализаций интерфейса. – jtahlborn