gpt4 book ai didi

java - 该方法仅适用于类的单个实例,而不适用于 ArrayList

转载 作者:行者123 更新时间:2023-12-02 01:33:03 25 4
gpt4 key购买 nike

我有类items,其中包含字段mProductType以及其他字段。

该类中有以下方法:

public ArrayList<Item> getProductsByCategory(String category, ArrayList<Item> productList) {

ArrayList<Item> returnList = new ArrayList<>();

for (int i = 0; i < productList.size(); i++) {

if (productList.get(i).getmProductType() == category) {
returnList.add(productList.get(i));
}

}
return returnList;
}

到目前为止一切顺利。在我的另一个类 ProductsInCategoryFragment 中,我尝试调用如下方法:

ArrayList<Item> products;

// ... filling variable "products" with content
products = fetcher.getItems();

// ... declaring the category String
String category = getArguments().getString("CATEGORY");


products.getProductsByCategory(category, products);

我可以从类项的实例调用该方法,但不能在该类的 ArrayList 上调用该方法。最后一行代码给了我这个错误:

Error:(82, 17) error: cannot find symbol method getProductsByCategory(String,ArrayList<Item>)

我知道这可能是一个非常基本的问题,但我似乎无法掌握它的窍门。这是某种可见性问题吗?

最佳答案

有了这个签名和实现,它可能会是 static函数,因为它不使用当前 ( this ) 对象中的任何成员。 ArrayList<Item> products是,嗯,一个ArrayList ,不是你的Item类型,这就是为什么它没有你的方法。另外,比较String==一般情况下不起作用,请使用equals()相反。
所以:

public static ArrayList<Item> getProductsByCategory(String category, ArrayList<Item> productList) {

ArrayList<Item> returnList = new ArrayList<>();

for (int i = 0; i < productList.size(); i++) {

if (category.equals(productList.get(i).getmProductType())) {
returnList.add(productList.get(i));
}

}
return returnList;
}

用作:

ArrayList<Item> filteredItems = Item.getProductsByCategory(category, products);

(假设 getProductsByCategory()Item 中的一个方法,但可能有一个更好的地方,也许在你的 main() 附近,或者你打算使用它的任何地方)

关于java - 该方法仅适用于类的单个实例,而不适用于 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55747188/

25 4 0