代码如下:public class Test1<E> {
public void show(E t) {
System.out.println(t);
}
}
public class Test2 {
private Test1<E> t1; public <E> Test1<E> setT(E t) {
t1 = t;
return t1;
}
}
请问高手,这么做Test2为什么是错的?正确的写法是什么样子,望指教

解决方案 »

  1.   

    class Test2<E>{
        private  Test1<E> t1;    public <T extends Test1<E>> Test1<E> setT(T t) {
            t1 = t;
            return t1;
        }
    }
      

  2.   

    请问一下,也就是说Test2也必须声明成一个泛型类才可以是吧?
    有一点不太明白,Test2其实与泛型无关了,只是包含了一个具有泛型性质的属性,可为什么Test2也必须声明为泛型类啊?
      

  3.   

    private Test1<E> t1;
    这里的“E”没有声明。
      

  4.   

    t1 = t;t1是Test1类型的,而t是未知类型,未知类型怎么能复制给Test1类呢
    public <E> Test1<E> setT(E t)此方法返回的是未知类型<E>,而不经过强制类型转化就返回Test1类,肯定错呀
      

  5.   


    声明E,指的是否就是
    class Test2<E>{
      

  6.   

    一个类里只能有一个公共类,test2去掉public