【发布时间】:2021-04-27 10:49:48
【问题描述】:
产品列表不能转换为可迭代类型你能告诉我如何解决这个问题或更好的逻辑来返回 getProductByName() 值作为字符串类型吗?
public class Products {
private static Iterable<Products> values() {
return (Iterable<Products>) new Products();
}
private int id;
private String product;
private List<Products> p;
public Products() {
p = new ArrayList<Products>(6);
p.add(new Products(0, "Foundation"));
p.add(new Products(1, "BB Cream"));
p.add(new Products(2, "Concealer"));
p.add(new Products(3, "Blush"));
p.add(new Products(4, "High Lighter"));
p.add(new Products(5, "Setting Spray/Powder"));
}
private Products(int id, String product){
this.id = id;
this.product = product;
}
public static Products getProductByName(int id){
for(Products productName:Products.values()){
if(productName.getId() == id){
return productName;
}
}
return null;
}
/* Getters and Setters */
}
【问题讨论】:
-
考虑简单地为
private List<Product> p;提供一个getter PS:为什么你的构造函数是“私有的”?您打算如何创建对象实例? -
它在我的代码中是公开的,我只是错误地把它写成了私有
-
为什么每个产品都有一个产品列表?我会创建一个 Product 类,然后创建一个名为 products 的单独 List
。 -
new Products().p是您要查找的 Iterable,转换为 values() 转换(Iterable<Products>) new Products();该类应该是列表本身(扩展)并且没有列表