Java で、こちらのように lua と python でファーストクラスの関数をエミュレートする方法はありますか?
def foo():
print "foo called"
bar = foo
bar() #output from this line is "foo called"
または、各ケースで異なるメソッドを使用して switch ステートメントを使用する唯一の方法はありますか?
編集: 明確化していただきありがとうございます。私が尋ねたいのは、関数への参照を作成し、それを関数であるかのように呼び出す方法があるということです。
また、目的は関数の特定の実装を呼び出すことではなく、呼び出す関数を選択することであり、その選択はまったく異なる可能性があります。これを行う理由は、機能を追加するために編集する必要のない、より一般的なクラスを持つためです。関数をコレクションやリストに入れるようなものです。
Edit2: 答えを見つける目的でこの質問を見ている人: これはスタックとヒープに関係しています。Java は、そのメソッドがヒープよりもはるかに厳密なスタックに格納されているため、これを行うことができません。ただし、Python はその関数をヒープに格納し、スタック上のそれらへの参照を使用します。Python では関数は参照によって呼び出されるため、関数への参照を変更して、必要に応じて使用できます。