【发布时间】:2017-06-13 13:51:48
【问题描述】:
我有以下代码,我正在尝试从我的数据库中返回数据(itemName、itemId)。然而它给了我以下错误:
Items() in Items cannot be applied to:
Expected Actual
Parameters: Arguments:
pool: com.sun.tools.javac.jvm.Pool itemName (java.lang.String)
code: com.sun.tools.javac.jvm.Code itemId (java.lang.String)
symtab: com.sun.tools.javac.code.Symtab quantity (java.lang.String)
types: com.sun.tools.javac.code.Types cost (java.lang.String)
这是我的代码:
public List<Items> getItemList() throws SQLException{
try {
Statement statement = connection.createStatement();
ResultSet results = statement.executeQuery("SELECT * FROM Items");
{
List<Items> itemsList = new ArrayList<>();
while (results.next()) {
String itemName = String.valueOf(results.getString("item_name"));
String itemId = String.valueOf(results.getString("item_id"));
Items items = new Items(itemName, itemId); // where the error is
itemsList.add(items);
}
return itemsList;
}
} catch(Exception e){
e.printStackTrace();
}
return null;
}
是不是因为类型不兼容(对象与字符串)?如果是这样,String.valueOf... 不正确?
编辑
public class Items {
// Constructor
public Items(String itemName, String itemId){
setItemName(itemName);
setItemId(itemId);
}
// itemName
private final StringProperty itemName = new SimpleStringProperty(this,"itemName");
public StringProperty itemNameProperty(){
return itemName;
}
public final String getItemName(){
return itemNameProperty().get();
}
public final void setItemName(String itemName){
itemNameProperty().set(itemName);
}
// itemId
private final StringProperty itemId = new SimpleStringProperty(this,"itemId");
public StringProperty itemIdProperty(){
return itemId;
}
public final String getItemId(){
return itemIdProperty().get();
}
public final void setItemId(String itemId){
itemIdProperty().set(itemId);
}
}
【问题讨论】:
-
构造函数参数的预期类型是什么?
-
不确定错误格式来自哪里。所以我会根据我的理解猜测它需要 4 个参数,而不是两个参数,而且似乎是
String以外的其他类型,你是在导入好的Items类吗? -
@JasonD 您对此有何期待? Blasanka,确实没有必要但也不重要,它只会确保这是一个不在池中的字符串
-
我是唯一一个从未见过这种方式的堆栈跟踪的人吗?
-
@purpleman,我不这么认为。它必须是您的 JVM 实现。无论如何,我不会在您阅读教程时问它是什么。无论如何,一些想法,其中一些已经被其他人指出: 1. 似乎您正在使用错误的参数调用构造函数,但同样,该堆栈跟踪非常奇怪。您可以发布完整的堆栈跟踪吗? 2. String.valueOf 没用,因为 ResultSet.getString 已经产生了字符串
标签: java mysql database javafx