2016-11-21 14 views
1

関数を別の関数のパラメータとして渡すことはできますか?javaの関数引数として関数名を渡すことはできますか?

void add() 
{ ---- 
} 
------ 
--- 
object.display(add()); 
+0

@FastSnail、necesserily真実ではないように渡すことができます

public int abc(int a) 

にそれを渡したいです。 display()内のどこかでadd()関数を呼び出すかどうかによって異なります。 –

答えて

0

可能性がメソッド参照またはラムダ

object.display(this::add); 

または

object.display(() -> add()); 

を渡しているあなたはそれを渡すことができますが、それはなりますメソッドの戻り値の型をパラメータとして取る

public int xyz(); 

がこのメソッドのXYZの署名であると仮定して、あなたは、あなたが

abc(xyz()) 
5

注:上記の複製は、Java 1.0から7では適切です。Java 8では、以下をお読みください。


あなたはリフレクションを使用してその名前をルックアップする必要があるだろうしかしあなたはこの

object.display("add"); 

のような名前を渡すことができます。これはエラーが起こりやすく、私はそれを避けるでしょう。あなたは何ができるか

displayの宣言が

public void display(Runnable onDisplay) { 
    // do something 
    onDisplay.run(); 
    // do something else 
} 
関連する問題