如何在java中声明类内对象的ArrayList?
我对java和编程非常不熟练,尽管我正在尝试做我朋友的一个家庭练习!:P 该练习包括创建一个显示商店中可用产品列表的系统,让用户能够选择他/她想要的产品,请求确认,然后添加到购物车中以便稍后结账 问题是,我试图为产品创建一个类模板,然后将它们放在类“Product”中对象的ArrayList中。如果我声明所述列表并将所有想要的对象添加到函数中,效果很好,但我不能在类中声明它(就好像它是一个排序变量一样) 以下是部分代码:如何在java中声明类内对象的ArrayList?,java,class,object,arraylist,Java,Class,Object,Arraylist,我对java和编程非常不熟练,尽管我正在尝试做我朋友的一个家庭练习!:P 该练习包括创建一个显示商店中可用产品列表的系统,让用户能够选择他/她想要的产品,请求确认,然后添加到购物车中以便稍后结账 问题是,我试图为产品创建一个类模板,然后将它们放在类“Product”中对象的ArrayList中。如果我声明所述列表并将所有想要的对象添加到函数中,效果很好,但我不能在类中声明它(就好像它是一个排序变量一样) 以下是部分代码: package system; class Product { pub
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
}
这种策略使访问每个产品变得更容易,并使其更好地模块化,使我能够在将来添加更改
唯一的问题是,正如我所说的,我不能在一个类的开头声明它。显然,它只能在方法内部声明,并且只能在所述方法中使用
有什么建议可以继续吗?我试着研究一下,但找不到/理解任何合适的答案
此外,任何关于如何使此代码更整洁的提示都非常感谢
谢谢 在
系统中有一个构造函数
类,然后
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));
}
}
因为列表是一个列表
你能行
System.out.println(list.get(0).getName()); //Prints "Coca-Cola"
如果我理解正确,您不能在构造函数之外访问ArrayList 您可以在类中声明ArrayList,但随后在构造函数中添加项 所以
公共类系统{
ArrayList=新建ArrayList();
公共系统(){
列表。添加(参数1、参数2、参数3);
//在这里添加内容。
}
}
谢谢!另外,如果我可以再问几个问题:@OphirNeto如果你不向应用程序介绍产品,你将不得不重新编译项目,你将永远无法本地化这个应用程序,因为你正在硬编码值,如果你这样做是为了理解java,那么从这个开始,学习更多关于设计模式的知识。因为编写代码的正确方式更多地取决于您想要实现的目标。。。你的意思是,我基本上不能在不重写代码的情况下从代码中添加或减去乘积,对吗?我曾想,人们将无法添加更新的产品,也无法更改其中的任何内容。我这样写是为了简单,因为我不需要额外的功能和活力。谢谢你的提示!另外,请不要理会我的第一条评论(“谢谢!还有,如果我可以再问几个问题的话:”)。我试图添加一些更多的信息到它,但我花了超过五分钟,无法再编辑它。把它看作是第一次写的:“谢谢!那么我该怎么写这个代码呢?”或者类似的东西。谢谢!Netbeans没有显示任何警告,所以应该是这样!提示:使用接口而不是实现==列表而不是ArrayList:)
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"
public class System{
ArrayList<Product> list = new ArrayList<Product>();
public System(){
list.add(param1, param2, param3);
//add stuff here.
}
}