【发布时间】:2024-01-02 01:49:01
【问题描述】:
如何在我的 Eclipse 中收到来自 O'Reilly 的名为“Java 泛型和集合”的书中的此类警告? :
% javac -Xlint:unchecked l/Stack.java l/ArrayStack.java \
% l/Stacks.java l/Client.java
l/ArrayStack.java:6: warning: [unchecked] unchecked call to add(E)
as a member of the raw type java.util.List
public void push(Object elt) list.add(elt);
^
1 warning
这是引发上述警告的整个代码:
l/Stack.java:
interface Stack {
public boolean empty();
public void push(Object elt);
public Object pop();
}
l/ArrayStack.java:
import java.util.*;
class ArrayStack implements Stack {
private List list;
public ArrayStack() { list = new ArrayList(); }
public boolean empty() { return list.size() == 0; }
public void push(Object elt) { list.add(elt); }
public Object pop() {
Object elt = list.remove(list.size()-1);
return elt;
}
public String toString() { return "stack"+list.toString(); }
}
l/Stacks.java:
class Stacks {
public static Stack reverse(Stack in) {
Stack out = new ArrayStack();
while (!in.empty()) {
Object elt = in.pop();
out.push(elt);
}
return out;
}
}
l/Client.java:
class Client {
public static void main(String[] args) {
Stack stack = new ArrayStack();
for (int i = 0; i<4; i++) stack.push(new Integer(i));
assert stack.toString().equals("stack[0, 1, 2, 3]");
int top = ((Integer)stack.pop()).intValue();
assert top == 3 && stack.toString().equals("stack[0, 1, 2]");
Stack reverse = Stacks.reverse(stack);
assert stack.empty();
assert reverse.toString().equals("stack[2, 1, 0]");
}
}
顺便说一句,当我在 Eclipse 中编译此代码时,我在此代码中有不止 1 个警告。
可能% javac -Xlint:unchecked ... 类型的警告会显示在 Eclipse 中,但我不知道它们在哪里。
我没有在“问题”或“控制台”的书签中看到它们。
【问题讨论】:
-
您将在编辑器中突出显示未经检查的警告,在 Package Navigator 中作为装饰应用,并在 Problems 中列出。