为什么这样编译不通过
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()
      

aliyun

类似问题 »