警告:JAVA中的[unchecked] unchecked转换

时间:2018-09-08 19:18:25

标签: java arrays

我正在尝试使用邻接列表(其中使用链接列表的数组)来实现有向图。我收到warning: [unchecked] unchecked conversion,但运行正常。

import java.util.*;

public class traversal{

static class adList{

private int vertices;

private LinkedList<Integer> vertex[];

adList(int V){

    vertices=V;

    vertex = new LinkedList[V];

    for(int i=0;i<V;i++)
        {
            vertex[i] = new LinkedList<Integer>();
        }


            }


public void insertAlist(int start,int end)
{
    //add an edge from source to destination
    vertex[start].addFirst(end);

    //add an edge from dest to source
    //ob.vertex[end].addFirst(start);

}


public void printAlist()
{
    for(int i=0;i<vertices;i++)
        {
            System.out.print("Node "+ i + " HAS THE CONNECTION WITH NODES ");
            for(Integer x:vertex[i])
                    {

                        System.out.print(x+" ");

                    }
            System.out.println();        
        }

}        

}






public static void main(String[] args)
    {
        adList ob = new adList(4);
        ob.insertAlist(2,3);
        ob.insertAlist(2,0);
        ob.insertAlist(0,2);
        ob.insertAlist(0,1);
        ob.insertAlist(1,2);
        ob.insertAlist(3,3);
        ob.printAlist();
    }

}

我收到以下警告。

.\traversal.java:15: warning: [unchecked] unchecked conversion
    vertex = new LinkedList[V];
             ^
  required: LinkedList<Integer>[]
  found:    LinkedList[]
1 warning

我尝试了LinkedList<Integer>[],但是也没有用。 为什么会出现此错误?我该如何解决?

1 个答案:

答案 0 :(得分:-3)

您还需要将通用类型添加到行中

 vertex = new LinkedList[V];

所以它应该读

 vertex = new LinkedList<Integer>[V];

在类型系统可以确定应该是哪种类型的情况下,您可以使用Diamond运算符忽略实际类型,因此您也应该能够做到

 vertex = new LinkedList<>[V];

有关取消选中的类型转换的更多信息,请查看:Java unchecked conversion