java - 如何在java中的类中声明对象的ArrayList?

标签 java class object arraylist

尽管我正在尝试做我 friend 的家庭练习之一,但我对 java 和编程非常不熟练! :P

该练习包括创建一个系统,显示商店中可用的产品列表,让用户能够选择他/她想要的产品,要求确认,然后添加到购物车以便稍后结账。

问题是,我正在尝试为产品创建一个类模板,然后将它们全部放在“Product”类中的对象的 ArrayList 中。如果我声明所述列表并将我想要的所有对象添加到函数内,则效果很好,但我无法在类内声明它(就好像它是某种变量一样)。

这是部分代码:

package system;

class Product {

public int id;
public String name;
public double price;

public Product(int startId, String startName, double startPrice){
     startId = id;
     startName = name;
     startPrice = price;
 }

public int getId(){
    return id;
}

public double getPrice(){
    return price;
}
public String getName(){
    return name;
}


}
//Main Class (The one that has the 'main()' function)

public class System {

ArrayList<Product> list = new ArrayList<Product>();
list.add(new Product(0, "Coca-Cola", 3.00));
list.add(new Product(1, "Mountain Dew", 2.00));
list.add(new Product(2, "Mango Smoothie", 4.50));
list.add(new Product(3,"Orange Juice", 5.00));
list.add(new Product(4, "Dr. Pepper", 4.50));
list.add(new Product(5, "Sandwich", 3.00));
list.add(new Product(6, "Hamburger", 3.50));
list.add(new Product(7, "Light Sandwich", 4.00));


//Yadda Yadda Yadda
}

这样做的目的是能够通过简单地输入相关产品对象的 ID 来访问该产品对象,该 ID 与其在 ArrayList 中的位置相同。

例如:

System.out.println(list[0].getName); //Prints "Coca-Cola"

这种策略使访问每个产品变得更加容易,并且更好地模块化,使我能够在将来添加更改。

正如我所说,唯一的问题是我无法在类的开头声明它。显然,它只能在方法内部声明,并且只能在该方法中使用。

对我如何进行有什么建议吗?我尝试进行了一些研究,但找不到/理解任何合适的答案。

此外,非常感谢有关如何使此代码更整洁的任何提示。

谢谢!

最佳答案

在您的System类中有一个构造函数,然后

class System {

    List<Product> list = new ArrayList<Product>();
    public class System() {

         list.add(new Product(0, "Coca-Cola", 3.00));
         list.add(new Product(1, "Mountain Dew", 2.00));
         list.add(new Product(2, "Mango Smoothie", 4.50));
         list.add(new Product(3,"Orange Juice", 5.00));
         list.add(new Product(4, "Dr. Pepper", 4.50));
         list.add(new Product(5, "Sandwich", 3.00));
         list.add(new Product(6, "Hamburger", 3.50));
         list.add(new Product(7, "Light Sandwich", 4.00));
    }
}

或者,

你可以

    class System {

        List<Product> list = new ArrayList<Product>(){

             {
                  add(new Product(0, "Coca-Cola", 3.00));
                  add(new Product(1, "Mountain Dew", 2.00));
                  add(new Product(2, "Mango Smoothie", 4.50));
                  add(new Product(3,"Orange Juice", 5.00));
                  add(new Product(4, "Dr. Pepper", 4.50));
                  add(new Product(5, "Sandwich", 3.00));
                  add(new Product(6, "Hamburger", 3.50));
                  add(new Product(7, "Light Sandwich", 4.00));
             }

       };

    }

但这不是一个好的编写方式,您不应该像这样对代码中的值进行硬编码,

你不能这样做

System.out.println(list[0].getName); //Prints "Coca-Cola" 

因为列表是一个列表,

你可以做到

System.out.println(list.get(0).getName()); //Prints "Coca-Cola"

关于java - 如何在java中的类中声明对象的ArrayList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32418252/

相关文章:

java - Java 中的正则表达式 : find all instances of [char1] but only if they are not preceded by [char2]

java - 如何将大输入流发送到 Spring REST 服务?

swift - 当我转到另一个 View 时,为什么 deinit 没有被调用?

javascript - 如何使用 JavaScript 动态更改 PDF 对象/嵌入文件的 "src"或 "data"?

java - JMS 性能

PHP类没有反应

python - 类似于 Python 中的 Pojo 类

javascript - 我可以在 JavaScript 中创建自己的数组对象吗?

php - 第 1 页之后分页不起作用?

java - 如果不缩放 box2d 每米像素会发生什么?