Eclipse和类导入问题

时间:2013-12-30 16:47:55

标签: java eclipse import

我正在使用Eclipse遇到一个奇怪的行为:我正在尝试使用ArrayList所以如果我尝试导入该类然后使用它,我会得到一个令人讨厌的错误。

//... bunch of other imports

//Warning: unused import
import java.util.ArrayList;

public class TagHandler {
    public static <ArrayList>Tag getRows(int id) throws SQLException {
        String query = "SELECT * FROM Tag WHERE id = ?";

        //Unexpected type error
        ArrayList<Tag> list = null;

        ResultSet rs = null;

// ... more code ...
}

但是如果我使用包的绝对路径实例化一个对象,Eclipse就可以了。

//... bunch of other imports

public class TagHandler {
    public static <ArrayList>Tag getRows(int id) throws SQLException {
        String query = "SELECT * FROM Tag WHERE id = ?";

        //Works fine
        java.util.ArrayList<Tag> list = null;

        ResultSet rs = null;

// ... more code ...
}

我已经编写了其他类,我总是导入ArrayList类并且顺利使用它,所以可能出错了?

3 个答案:

答案 0 :(得分:4)

您正在声明方法的泛型类型参数,该参数会隐藏ArrayList类型

public static <ArrayList> Tag getRows(int id) throws SQLException {
               ^

如果您使用简单名称ArrayList,则表示该类型变量,而不是实际的java.util.ArrayList类型。

您的方法等同于

public static <T> Tag getRows(int id) throws SQLException {
    String query = "SELECT * FROM Tag WHERE id = ?";

    //Unexpected type error
    T<Tag> list = null;

    ResultSet rs = null;

这在语法上是不正确的。您可能需要ArrayList<Tag>而不是<ArrayList>Tag

答案 1 :(得分:2)

这是因为静态方法的声明不正确

public static <ArrayList>Tag getRows(int id) throws SQLException

应该是

public static ArrayList<Tag> getRows(int id) throws SQLException

尝试修复静态方法并导入ArrayList并在文件顶部导入

import java.util.ArrayList;

public class TagHandler {
  public static ArrayList<Tag> getRows(int id) throws SQLException {
    String query = "SELECT * FROM Tag WHERE id = ?";

    ArrayList<Tag> list = null;

    ResultSet rs = null;

// ... more code ...
}

答案 2 :(得分:0)

应该是

 public static ArrayList<Tag> getRows(int id) throws SQLException