任何人都可以在下面的陈述中指出我所遗漏的内容吗? 警告1
prog.java:16: warning: [unchecked] unchecked conversion
adj = new LinkedList[v];
^
required: LinkedList<Integer>[]
found: LinkedList[]
警告2
prog.java:18: warning: [unchecked] unchecked conversion
adj[i] = new LinkedList();
^
required: LinkedList<Integer>
found: LinkedList
警告3
prog.java:43: warning: [unchecked] unchecked call to push(E) as a member of the raw type Stack
stack.push(new Integer(v));
^
where E is a type-variable:
E extends Object declared in class Stack
帮我恢复这个警告。谢谢你提前 PC: - keep_smiling
答案 0 :(得分:0)
出现警告1和2,因为您没有正确使用泛型。将LinkedList归为泛型类型而不是原始类型,例如LinkedList <Integer>.
我不能告诉你第三个,因为你应该提供代码缩写。
答案 1 :(得分:0)
因为您使用的是通用数据结构,并且您的变量与您收到警告的确切通用类型不匹配。更准确的说,它发生在右侧泛型类型不同或左侧泛型类型的子类型时。
例如,如果你有:
List<String> x;
如果您执行以下操作:
x = new ArrayList();
您将收到未经检查的警告,因为x
的泛型类型(即String
)与右侧泛型类型{{1}不同或超类型这是List的默认值。
答案 2 :(得分:0)
只放
@SuppressWarnings("unchecked")
您的方法之上;
例如:
class Graph {
private int V;
private LinkedList <Integer> adj[];
@SuppressWarnings("unchecked")
Graph(int v) {
V = v;
adj = new LinkedList[v];
for (int i=1; i<=v; i++)
adj[i] = new LinkedList<Integer>();
}
}
使用
时,这里有一个问题adj = new LinkedList<Integer>[v]; rather than adj = new LinkedList[v]
编译器抛出错误不能使用泛型类型,因此通过添加上述条件@SuppressWarnings(“ unchecked”)可以解决此问题。