-Xlint in eclipse

时间:2015-08-11 20:43:08

标签: java eclipse warnings

在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中显示,但我不知道它们在哪里。

我没有在书签中看到它们“问题”或“控制台”。

1 个答案:

答案 0 :(得分:0)

Eclipse有自己的Java编译器,不使用'javac',因此它不会产生相同的警告消息。

使用Eclipse IDE时,所有生成的消息都在Java中的Preferences中配置&gt;编译器&gt;错误/警告。

您也可以从命令行使用Eclipse编译器。选项here