public class Gener {
public static void main(String[] args) {
A a = new A();
String s = a.get("1");
Integer integer = a.get(2);
B integerB = new B();
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 get(T t) {
return t;
}
}
class B<E> {
public T get(T t) {
return t;
}
}
已知结论:
在非泛型类对象中使用泛型方法和
实例化时指定了泛型类的对象使用泛型方法没问题
但是!
在实例化时没有指定泛型的泛型类的对象使用泛型方法返回值会变成Object
得到泛型对应的返回值
我自己的理解是:因为泛型类实例化时没有指定泛型,所以在此类实例化时所有泛型(类和方法上定义的)都被加载为Object,但是,并没有找到相关的依据能证明这一点,希望各位帮忙解决
你在实例化的时候,需要指定泛型,如果不指定泛型,默认就是object类型。因为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);
//为什么这里返回类型是Object!!!
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;
}
}