关于泛型有关问题

关于泛型问题
class DemoFanXing 
{

public static void main(String[] args)
{
Arr<Integer> a=new Arr<Integer>();

a.setArray(1,2,3,4,5,6);
for(int x:a.getArray())
{System.out.print(x+" ");}
}
}

class Arr <T>
{ private T[] arr;
public <T> void setArray(T...arg)
{
this.arr=arg;
}
public T[] getArray()
{return arr;}
}
DemoFanXing.java:38: 错误: 不兼容的类型: T#1[]无法转换为T#2[]
                this.arr=arg;
                         ^
  其中, T#1,T#2是类型变量:
    T#1扩展已在方法 <T#1>setArray(T#1...)中声明的Object
    T#2扩展已在类 Arr中声明的Object
注: DemoFanXing.java使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
1 个错误

------解决思路----------------------
将 public <T> void setArray(T...arg)  修改为 public <T> void setArray(T[]  arg) 试试
------解决思路----------------------
public <T> void setArray(T...arg)
{
this.arr=arg;
}改为
public  void setArray(T...arg)
{
this.arr=arg;
}
其中T已经在class Arr <T>中声明了。
------解决思路----------------------

    public void setArray(T... arg) {
        this.arr = arg;
    }


类的泛型已经定义了,无需再在方法里定义一个T,方法的T可能会被解析为另外一个类型E
------解决思路----------------------
    public <E> void setArray(T... arg) {
        this.arr = arg;
    }

或者方法的泛型换个,别和类的泛型冲突即可(和作用域有关)