为什么这样编译不通过
TreeSet<Short>[] fileId2Servers = new TreeSet<Short>[5];
而这样是可以的呢
TreeSet<Short>[] fileId2Servers = new TreeSet[5];
我希望能写成第一种形式,写成第二种形式会报warning:Type safety: The expression of type TreeSet[] needs unchecked conversion to conform to TreeSet<Short>[]请问怎么写才不会报编译错误呢?

解决方案 »

  1.   

    只能按照如下方式写~
    TreeSet<?>[] fileId2Servers = new TreeSet<?>[5];
    fileId2Servers[0] = new TreeSet<String>();
    fileId2Servers[1] = new TreeSet<Short>();
      

  2.   

    使用ArrayList
            ArrayList<TreeSet<Short>> fileId2Servers = new ArrayList<TreeSet<Short>>();
            ArrayList<TreeSet<Short>> fileId2Servers2 = new ArrayList<>();//java7
      

  3.   

    楼主犯得是java泛型中的典型错误 这么跟你说吧Treeset<Short>()不是一种类型 在交给java虚拟机处理时 都转化成Treeset()