は次のようにオブジェクト:(Javaで)チェックをコンパイル時にクラスのメソッドオブジェクトを取得
Method myMethod = MyClass.class.getDeclaredMethod("myDeclaredMethod",Arg1Class.class);
しかし!メソッド "myDeclaredMethod"の存在をコンパイル時にチェックしたいと思います。私は実際にメソッドを動的に選択する必要はありません、私は別のメソッドに渡すことができるように、私はちょうどそれへの参照が必要です... Cの関数ポインタを持っている方法に似ています。私はコール「runFunction(のhelloWorld)」の「のhelloWorld」を間違えた場合、私はコンパイル時のエラーを取得し、
#include <stdio.h>
void helloWorld() {
printf("hello\n");
}
void runFunction(void (myfunc)()) {
myfunc();
}
int main() {
runFunction(helloWorld);
return 0;
}
注意:私はこのような何かをしたいと思います。可能であれば、Javaで同じコンパイル時エラーが欲しいです。
質問に簡潔に回答し、代替手段を提供してくれてありがとう。私は、このコンテキストのインターフェイスは私を助けるつもりはないので、別の選択肢があったと思います...私は(可能な限り単純な方法で)メインスレッドからメソッドを呼び出して、別のスレッドで実行させようとしています。これまでのベストは、キューを使用してメソッド名を文字列として渡すことです。これは、私が2番目のスレッドで呼び出すかもしれない約半ダースのメソッドがあり、コード内で半ダースの場所で繰り返さなければならない5行のソリューションが欲しくないので、私が持っている最高のものです。 – Jason
@Vivienなぜ 'HelloWorld'が' interface Something'を実装していないのか分かりませんが、コンパイルエラーが発生しませんか?ありがとう。 –