回想起來,這個問題的答案很可能會變得很明顯,但現在我發現自己相當困惑於此。我會先給一些代碼塊,然後提出問題。Java數組列表不兼容類型錯誤
這是我的類Stockmanager的一部分,我省略了一些與這個問題無關的方法。
import java.util.ArrayList;
public class StockManager
{
private ArrayList stock;
public StockManager()
{
stock = new ArrayList();
}
public void addProduct(Product item)
{
stock.add(item);
}
public Product findProduct(int id)
{
int index = 0;
while (index < stock.size())
{
Product test = stock.get(index);
if (test.getID() == id)
{
return stock.get(index);
}
index++;
}
return null;
}
public void printProductDetails()
{
int index = 0;
while (index < stock.size())
{
System.out.println(stock.get(index).toString());
index++;
}
}
}
這裏是我的類產品,再次與一些方法省略。
public class Product
{
private int id;
private String name;
private int quantity;
public Product(int id, String name)
{
this.id = id;
this.name = name;
quantity = 0;
}
public int getID()
{
return id;
}
public String getName()
{
return name;
}
public int getQuantity()
{
return quantity;
}
public String toString()
{
return id + ": " +
name +
" voorraad: " + quantity;
}
}
我的問題就在於,我在查找產品信息()方法得到一個編譯時錯誤。更具體地說,線Product test = stock.get(index);
用消息不兼容的類型表示。
StockManager的構造函數創建一個名爲stock的新的ArrayList
。從方法addProduct()
明顯可見,該ArrayList
包含Product
類型的項目。 Product
類有許多變量,其中之一稱爲id,類型爲integer。該類還包含返回ID的方法getID()
。
據我所知,從arraylist獲取項目的方法是get()
方法與()之間的數字指示項目的位置。鑑於我的數組列表包含Product
的實例,因此我期望得到Product
,因爲我在數組列表上使用get()
方法。所以我不明白爲什麼當我定義一個名爲test類型爲Product的變量並嘗試從ArrayList中分配一個項目時它不起作用。據我所知,我在方法printProductDetails()
中成功使用了相同的技術,其中我使用Product上的toString()
方法對來自arraylist的對象進行操作。
我希望有人能爲我澄清我的過錯。如果它有什麼不同,我在BlueJ中做這個東西可能不是最好的工具,但它是我應該用於這個學校項目的東西。
只需要投'回報(產品)stock.get(指數)的結果;' – nashuald