【问题标题】:Initializing a new object of a class that contains an array初始化包含数组的类的新对象
【发布时间】:2013-02-21 01:17:56
【问题描述】:

我是java新手,做得不好,需要一些帮助。我有一个名为“RestaurantObject”的类,我试图在我的主目录中从该类创建一个对象。我遇到了问题,因为该对象中的一个变量是一个数组。我真的不知道该放什么。

这是我的主要内容:

public class MyRestaurantObject {
     public static void main(String[] args) {

     RestaurantObject mcDonalds = new RestaurantObject("McDonalds", "McDonalds Menu", **WHAT GOES HERE?**);

这是我的课程“RestaurantObjects”中的代码

public class RestaurantObject {

private static final Object[] String = null;
private String restaurantName;
private String menu;
private String [] employees;


public RestaurantObject(String name, String menu, String [] employees){
setRestaurantName(name);
setMenu(menu);
setEmployees(employees);
}


//restaurantName
public String getRestaurantName(){
return restaurantName;
}

private void setRestaurantName(String name){
restaurantName = name;
}

//menu
public String getMenu(){
return menu;
}

private void setMenu(String menu){
this.menu = menu;
}

//employees
public String[] getEmployees(){
return employees;

}

private void setEmployees(String [] employees){
this.employees = employees;
}

}

我知道我做的不对。请帮忙!

谢谢!

另外,如果我的任何术语有误,请纠正我。

【问题讨论】:

标签: java arrays class object


【解决方案1】:

只需在第三个参数中传递一个新的字符串数组。

RestaurantObject mcDonalds = new RestaurantObject("McDonalds", "McDonalds Menu", new String[] {"Value1", "Value2"});

【讨论】:

    【解决方案2】:

    我猜您还没有学习 Java 可变参数,但这是使用它们的完美案例。那你可以去

    public RestaurantObject(String name, String menu, String...employees) {
       setRestaurantName(name);
       setMenu(menu);
       setEmployees(employees);
    }
    

    以后,

    RestaurantObject mcDonalds = new RestaurantObject(
            "McDonalds", "McDonalds Menu", "John Doe", "Jane Doe");
    

    如果您不能使用或尚未学习可变参数,@fvu 版本 2 是我的首选。

    【讨论】:

      【解决方案3】:

      嗯,有两种选择:

      1 在创建 RestaurantObject 之前创建数组(该类实际上应该被称为 Restaurant

      String[] emplArr = new String[]{ "Bob", "Alice", "Fred"};
      RestaurantObject mcDonalds;
      mcDonalds = new RestaurantObject("McDonalds", "McDonalds Menu", emplArr);
      

      2 在RestaurantObject 的构造函数调用中使用静态初始化器初始化数组

      RestaurantObject mcDonalds;
      mcDonalds = new RestaurantObject("McDonalds", "McDonalds Menu", new String[]{ "Bob", "Alice", "Fred"});
      

      【讨论】:

      • 我的老师一直称它们为“对象”,并且他具体说明了这门课应该叫什么。它也困扰着我。如何在构造函数调用中初始化数组?非常感谢。
      • ClassObject 之间是有区别的。您可以将Class 视为Object 的蓝图,它记录了该类的Objects 拥有的所有属性。另一方面,ObjectClass 的特定实例。因此,在您的班级中 mcDonalds 是您的 Restaurant 班级的实例,该班级特定于麦当劳餐厅。
      【解决方案4】:

      你可以的

      RestaurantObject mcDonalds = new RestaurantObject(
          "McDonalds", "McDonalds Menu", new String[] {"John Doe", "Jane Doe"});
      

      String[] employees = new String[] {"John Doe", "Jane Doe"};
      RestaurantObject mcDonalds = new RestaurantObject(
          "McDonalds", "McDonalds Menu", employees);
      

      String[] employees = new String[2];
      employees[0] = "John Doe";
      employees[1] = "Jane Doe";
      RestaurantObject mcDonalds = new RestaurantObject(
          "McDonalds", "McDonalds Menu", employees);
      

      关于后者的注意事项:当您创建这样的数组时,您必须知道它的大小,这有时会很烦人。这就是为什么很多人会更喜欢使用ArrayLists,它的行为或多或少像一个弹性数组,即当添加 n 项时它会自动扩展。

      【讨论】:

      • 谢谢!感谢您的帮助!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-31
      • 2020-05-18
      • 2020-05-28
      • 2018-06-22
      • 1970-01-01
      相关资源
      最近更新 更多