导入为java.util时不重新声明其方法。*对于Ubuntu中的LinkedList

时间:2016-06-21 05:24:39

标签: java eclipse ubuntu import linked-list

我在Ubuntu 14上使用java 7.

$ java -version
java version "1.7.0_79"
OpenJDK Runtime Environment (IcedTea 2.5.6) (7u79-2.5.6-0ubuntu1.14.04.1)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)

我在LinkedList类上编写了一个非常简单的代码:

import java.util.*;
public class First
{
    //@SuppressWarnings({ "rawtypes", "unchecked" })
    public static void main(String[] args)
    {
        LinkedList ll = new LinkedList();
        ll.add(5);
        System.out.println(ll);
    }
}

我的编译器产生错误:

$ javac First.java 

    First.java:8: error: cannot find symbol
            ll.add(5);
              ^
      symbol:   method add(int)
      location: variable ll of type LinkedList
    1 error

但是同样的代码完全适用于安装在同一个Ubuntu中的Eclipse。而且还在Windows中工作。

如果我在Ubuntu中显式导入LinkedList类,代码也开始在ubuntu中工作:

import java.util.LinkedList;
public class First
{
    //@SuppressWarnings({ "rawtypes", "unchecked" })
    public static void main(String[] args)
    {
          LinkedList ll = new LinkedList();
          ll.add(5);
          System.out.println(ll);
    }
}

$ javac First.java 
Note: First.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
$ java First 
[5]
$ 

在Ubuntu中只使用ArrayList类,它不需要显式实现ArrayList。

import java.util.*;
public class First
{
        //@SuppressWarnings({ "rawtypes", "unchecked" })
    public static void main(String[] args)
    {
        ArrayList ll = new ArrayList();
        ll.add(5);
        System.out.println(ll);
    }
}

$ javac First.java 
    Note: First.java uses unchecked or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.
    $ java First 
    [5]
    $ 

我无法理解这是什么问题。

1 个答案:

答案 0 :(得分:3)

我认为您的当前目录中存在一个班级名称LinkedList,其中First.java已保存。

因为我看到的是控制台错误

First.java:8: error: cannot find symbol   //method definition not found
            ll.add(5);
              ^
      symbol:   method add(int)
      location: variable ll of type LinkedList
    1 error

此处未找到方法定义,但编译器找到了Class LinkedList定义,而LinkedList类中没有add()这样的方法。

所以,我猜你的当前目录中名为LinkedList的类必须存在。因此,Compiler选择该类作为此行的参考。

 LinkedList ll = new LinkedList();

但未找到add()方法的定义。

由于