汎用のJavaインターフェイスId<T>
と、T getId()
という1つのメソッドと、Id<Long>
を実装するクラスMyClass
があります。 MyClass
で宣言されたメソッドをJavaリフレクションで調べると、戻り値のタイプがLong
で、戻り値がObject
のメソッドが2つあります。 2番目の方法はどこから来て、どのように削除できますか?ここで一般的なJavaインターフェイスを実装すると、追加のメソッドが追加されます
はソースです:
package mypackage;
import java.lang.reflect.Method;
public class MainClass {
public static void main(String[] args) {
for (Method method : MyClass.class.getDeclaredMethods()) {
System.out.println(method);
}
// prints out two lines
// public java.lang.Long mypackage.MyClass.getId() <-- ok
// public java.lang.Object mypackage.MyClass.getId() <-- not ok
}
}
interface Id<T> {
T getId();
}
class MyClass implements Id<Long> {
@Override
public Long getId() {
return new Long(0);
};
}
Returntypeが 'Long'のメソッドでは、プリミティブ' long'を返すこともできます。 'return 0L;'。それは 'ロング'にautoboxedされます。あなたの質問への答えではありませんが、おそらくあなたは知りませんでした。 –