下面代码中,arry=new T[10];编译报错,应该怎么样改呢!!public class GenericArray<T> {
private int index;

private T[] arry;

public GenericArray<T>(){
arry=new T[10];
}
}

解决方案 »

  1.   


    public class GenericArray<T> {
        private int index;
        
        private T[] arry ;
        
        public GenericArray(){
         arry = (T[])new Object[10];
        }
        
        public boolean set(int i, T t) {
         try {
    arry[i] = t;
    } catch (Exception e) {
    return false;
    }
    return true;
        }
        
        public T get(int i) {
         return arry[i];
        }
        
        public static void main(String[] args) {
    GenericArray<String> str = new GenericArray<String>();
    str.set(1, "test");
    System.out.println(str.get(1).getClass());
    System.out.println(str.get(1));
    }
    }
      

  2.   

    我是这么理解的,既然是泛型,那么原则上可以是任何符合的类,那么你怎么能保证,任何类都能 new 出来呢?我们看看ArrayList的构造类
        public ArrayList() {
    this(10);
        }
      

  3.   

    如1楼所说,Object是所有类的基类,那么构造一个能保存任何类的数组,当然没问题了。
      

  4.   

    这个叫做类型擦除。
    泛型不能显式地引用运行是类型的操作中,例如转型和new表达式,因为所有关于参数类型的信息都丢失了
      

  5.   

    public class GenericArray<T> {
        private int index;
        
        private T[] arry;
        
        public GenericArray<T>(T[] arr) {
            arry = arr;
        }
    }
      

  6.   


    import java.util.ArrayList;public class GenericArray{
    public static void main(String[] args){
    //ArrayList<String>[] array = new ArrayList<String>[10]; error
    ArrayList[] array1 = new ArrayList[10];
    ArrayList<?>[] array2 = new ArrayList<?>[10];
    }
    }
      

  7.   

    泛型是不能直接new的呀,如果你要用那个泛型对象,那就在之前创建好,然后把它的引用传进来。
     
    public T t(T[] t) {

       return t[1];
    }