【发布时间】:2017-11-29 08:46:21
【问题描述】:
我有一个通用的 java 接口 Id<T>,它有一个方法 T getId() 和一个实现 Id<Long> 的类 MyClass。当我使用 java 反射检查在MyClass 上声明的方法时,我看到了两种方法:一种返回类型为Long,另一种返回类型为Object。第二种方法从何而来,如何去除?
这里是来源:
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;。它将自动装箱为Long。不是你的问题的答案,但也许你不知道。
标签: java generics inheritance