我正在使用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
类并且顺利使用它,所以可能出错了?
答案 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