在O'Reilly的书籍“Java Generics and Collections”中,我可以做些什么来接收我的Eclipse警告? :
% 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中编译它时,我在这段代码中有多个警告。
类似% javac -Xlint:unchecked ...
的警告可能会在Eclipse中显示,但我不知道它们在哪里。
我没有在书签中看到它们“问题”或“控制台”。
答案 0 :(得分:0)
Eclipse有自己的Java编译器,不使用'javac',因此它不会产生相同的警告消息。
使用Eclipse IDE时,所有生成的消息都在Java中的Preferences中配置&gt;编译器&gt;错误/警告。
您也可以从命令行使用Eclipse编译器。选项here