在实例化时没有指定泛型的泛型类的对象使用泛型方法返回值会变成Object
问题代码
public class Gener {
public static void main(String[] args) {
A a = new A();
String s = a.get("1");
Integer integer = a.get(2);
B<Integer> integerB = new B<Integer>();
String s1 = integerB.get("2");
Integer integer1 = integerB.get(2);
//?????????
B b = new B();
Object o = b.get("2");
Object o1 = b.get(2);
}
}
class A {
public <T> T get(T t) {
return t;
}
}
class B<E> {
public <T> T get(T t) {
return t;
}
}
运行结果
已知结论:
在非泛型类对象中使用泛型方法和
实例化时指定了泛型类的对象使用泛型方法没问题
但是!
在实例化时没有指定泛型的泛型类的对象使用泛型方法返回值会变成Object
我想要达到的结果
得到泛型对应的返回值
我自己的理解是:因为泛型类实例化时没有指定泛型,所以在此类实例化时所有泛型(类和方法上定义的)都被加载为Object,但是,并没有找到相关的依据能证明这一点,希望各位帮忙解决