Java 所需的不兼容类型:类<;T>;发现:类<;第1章>;其中T是一个类型变量

Java 所需的不兼容类型:类<;T>;发现:类<;第1章>;其中T是一个类型变量,java,generics,Java,Generics,以下代码: public class A<T> { Class<T> klass; T instance; public A(T instance) { this.klass = instance.getClass(); // this requires an explicit cast to Class<T> to satisfy the compiler this.instance = insta

以下代码:

public class A<T> {

    Class<T> klass;
    T instance;

    public A(T instance) {
        this.klass = instance.getClass(); // this requires an explicit cast to Class<T> to satisfy the compiler
        this.instance = instance;
    }
}
。。。这样会使编译器静音,还是会有运行时惊喜的空间?如果不是,为什么编译器不能弄明白

为什么编译器不满意instance.getClass()总是生成类(因为instance的类型是t),而需要显式强制转换

考虑这一点:

A<Object> a = new A<Object>("Foo");

在这一点上,它在逻辑上是安全的,但它仍然需要强制转换,因为
Object.getClass()
只是声明返回
Class
Object.getClass()
不仅仅返回
Class
;它返回
Class
我有一个示例问题,这个问题实际上是其他问题。的问题源不是在我的数据库类中扩展
RoomDatabase
this.klass = (Class<T>) instance.getClass();
A<Object> a = new A<Object>("Foo");
Class<? extends T> klass;