以下を私の問題のクラスにしましょう:
class MyClass {
String name() {
return toString();
}
}
MethodType
「任意の」オブジェクトを返すメソッドを記述するインスタンスを作成したいと考えています。私は次のことを試みています:
MethodType genericTypeWithObjectReturn =
MethodType.methodType(Object.class, new Class[] {});
次に、を使用して方法を見つけようとします
MethodHandle mh =
lookup.findVirtual(MyClass.class, "name", genericTypeWithObjectReturn);
上記の行を使用すると、例外が発生します。
Caused by: java.lang.NoSuchMethodError: MyClass.name()Ljava/lang/Object;
私の観察では、メソッドの戻り値の型はまったく同じ型でなければなりません。つまりString.class
、上記のステートメントで定義するために使用する必要がありましたMethodType
。これは正しいです?私が説明した方法でこれを行うことができ、できればリフレクション API を使用しない方法はありますか?