gpt4 book ai didi

Java 泛型 : why someObject. getClass() 不返回 Class?

转载 作者:搜寻专家 更新时间:2023-10-30 21:10:00 24 4
gpt4 key购买 nike

我希望从编译时间和运行时间方面来看,.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>要么。

最佳答案

java.lang.Class不代表类型(为此使用 java.lang.reflect.Type)。如果T ,我们说 ArrayList<String>那么Class<ArrayList<String>>就没有意义了.

值得注意的是,在这种特殊情况下,方法不需要是通用的。

public static <T extends MyClass> void myMethod(T instance) {

相当于:

public static void myMethod(MyClass instance) {

关于Java 泛型 : why someObject. getClass() 不返回 Class<?延伸 T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4460580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com