Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中声明类内对象的ArrayList?_Java_Class_Object_Arraylist - Fatal编程技术网

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

如何在java中声明类内对象的ArrayList?,java,class,object,arraylist,Java,Class,Object,Arraylist,我对java和编程非常不熟练,尽管我正在尝试做我朋友的一个家庭练习!:P 该练习包括创建一个显示商店中可用产品列表的系统,让用户能够选择他/她想要的产品,请求确认,然后添加到购物车中以便稍后结账 问题是,我试图为产品创建一个类模板,然后将它们放在类“Product”中对象的ArrayList中。如果我声明所述列表并将所有想要的对象添加到函数中,效果很好,但我不能在类中声明它(就好像它是一个排序变量一样) 以下是部分代码: package system; class Product { pub

我对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
}
这种策略使访问每个产品变得更容易,并使其更好地模块化,使我能够在将来添加更改

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

有什么建议可以继续吗?我试着研究一下,但找不到/理解任何合适的答案

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


谢谢

系统中有一个构造函数
类,然后

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.
     }


}