これはリフレクションとは関係ありませんが、java 8+を使用している場合は「メソッド参照」を渡すことができます。あなたがこれを行うことができ、あなたがパラメータを取らず、単にint型を返すメソッドを使用することをあなたの例から想定すると:
public class MyClass {
public int getIntMemberFunction(){ ... }
public static int getIntStaticFunction(){ ... }
}
あなたの更新機能で、このように見えるように変更され、
public boolean update(IntSupplier s){ //input is a method reference or lambda
int i = s.get();
// logic relating to the value of i
}
その後あなたはこのように、限り、それはパラメータを取らず、intを返し、任意のクラスの任意の静的関数への参照を渡しupdate
を呼び出すことができます。
boolean result = update(MyClass::getIntStaticFunction);
またはyあなたが1つのまたは2のパラメータを取るメソッドを追加したい場合は
MyClass myClassInstance = ...
boolean result = update(myClassInstance::getIntMemberFunction);
:OUはこのように、限り、それはパラメータを取らず、int型を返すように、特定のオブジェクトのいずれかのメンバ関数への参照を渡しupdate
を呼び出すことができますのバージョンを作成して、ToIntFunction
またはToIntBiFunction
とすることができます。 2つのパラメータを超えると、独自の機能インタフェースを追加する必要があります。
Java 8を使用できますか?ラムダ式のサポートが追加されているため、関数型プログラミングがずっと簡単になります。そうでなければ、リフレクションはあなたが求めていることをする方法です。 –
私はあなたの質問から、あなたがそれを試してみるための簡単なプログラムを作成しようとしていないということを集めていますか?それがうまくいかなくても、コードを書いてテストし、その結果について教えてくれると、より良い質問ができます。 http://stackoverflow.com/help/mcve –
はい。 Lambdaは非常に便利で、Javaでいくつかの関数型プログラミング機能を提供しています。 – Logan