【发布时间】:2011-05-26 12:36:06
【问题描述】:
我希望从编译时间和运行时间的角度来看,.getClass() 提供正确类型的返回值不会成为问题。
但我一定是错的。
public class _GetClassGenerics2 {
static class MyClass {
}
public static void main(String[] args) {
MyClass myInstance = new MyClass();
// here it works
Class<? extends MyClass> type = myInstance.getClass();
myMethod(myInstance);
}
public static <T extends MyClass> void myMethod(T instance) {
Class<? extends T> type = instance.getClass();
// java.lang.RuntimeException: Uncompilable source code - incompatible types
// required: java.lang.Class<? extends T>
// found: java.lang.Class<capture#1 of ? extends _GetClassGenerics2.MyClass>
}
}
编辑:它也不适用于Class<T> 和Class<? super T>。
【问题讨论】:
-
Class<? super T> type怎么样? -
@sjngm: 1) 见编辑,2) 给定的其他问题不那么相关,我(通常)理解super和extends之间的区别。
标签: java class generics types type-safety