1

我有一个创建类对象列表的方法

public List<Product> initProducts(){
    List<Product> product = new ArrayList<Product>();

        Product prod = new Product(product.getId(),product.getItemName(),product.getPrice(),product.getCount());
        product.add(prod);

    return product;
}

我的产品类别是:

public class Product {

int ItemCode;
String ItemName;
double UnitPrice;
int Count;

/**
 * Initialise the fields of the item.
 * @param Name The name of this member of product.
 * @param id The number of this member of product.
 * @param Price The price of this member of product.
 */

public Product(int id, String Name, double Price, int c)
{
    ItemCode=id;
    ItemName=Name;
    UnitPrice=Price;
    Count = c;
}

public int getId()
{
   return this.ItemCode;
}

public String getItemName()
{
   return this.ItemName;
}

public double getPrice()
{
   return this.UnitPrice;
}

public int getCount()
{
   return this.Count;
}



/**
 * Print details about this members of product class to the text terminal.
 */
public void print()
{
    System.out.println("ID: " + ItemCode);
    System.out.println("Name: " + ItemName);
    System.out.println("Staff Number: " +UnitPrice);
    System.out.println("Office: " + Count);

}
}

我收到一个错误,该方法getId()未定义类型List<Product>,其他方法也是如此。请帮我解决这个错误。

我的说法正确吗??

Product prod = new Product(product.getId(),product.getItemName(), product.getPrice(),  
product.getCount());
product.add(prod);
4

4 回答 4

4

product是参考List

List<Product> product = new ArrayList<Product>();

没有那个方法

于 2013-07-31T04:35:13.863 回答
2

product是对List对象的引用。

并且List/ArrayList没有名为getId().

您已经getId()为 class 编写了方法Prodct,因此您可以使用 ref 调用该方法来调用Product类对象。

如果要获取任何产品对象表单列表,请get(int index)使用ArrayList.

例如。

Product prod = product.get(0);
String id= prod.getId();
于 2013-07-31T04:48:37.063 回答
2

我相信,您面临此问题的原因更多是由于不遵循代码约定,而不是其他任何约定。

每当您创建任何对象的集合时,惯例是使用复数作为集合的引用名称。以及对象本身的单数引用名称。您可以在此处找到更多详细信息。

以下是遵循代码约定的重写代码:

创建 Product 类对象列表的方法:

public List<Product> initProducts(){
    List<Product> products = new ArrayList<Product>();
    Product product = new Product(products.getId(), products.getItemName(), products.getPrice(), products.getCount());
    products.add(prod);    
}

产品类别:

class Product {

int itemCode;
String itemName;
double unitPrice;
int count;

public Product(int itemCode, String itemName, double unitPrice, int count)
{
    this.itemCode = itemCode;
    this.itemName = itemName;
    this.unitPrice = unitPrice;
    this.count = count;
}

public int getId()
{
   return this.itemCode;
}

public String getItemName()
{
   return this.itemName;
}

public double getPrice()
{
   return this.unitPrice;
}

public int getCount()
{
   return this.count;
}
}

现在,很容易看出,产品对象(List 类型)将没有任何方法名称 getId() 或 getCount()。事实上,这些是 List 中包含的 Object 的方法。

遵循约定将帮助您避免期货中的此类麻烦。

于 2013-07-31T04:56:55.017 回答
1

我的说法正确吗??

Product prod = new Product(product.getId(),product.getItemName(), product.getPrice(),  
product.getCount());
product.add(prod);

不,这是不正确的。product 不是类的实例Product,而是List. List 没有任何方法调用getId

如果您想从列表中检索元素并使用它来创建另一个实例,您可以执行以下操作:

Product exisProd = product.get(0);
Product prod = new Product(exisProd .getId(),exisProd .getItemName(), exisProd .getPrice(),  
    exisProd .getCount());

但请确保您在列表中有元素,否则您可能会遇到异常。产品.add(产品);

于 2013-07-31T04:37:07.090 回答