简体   繁体   English

初始化包含数组的类的新对象

[英]Initializing a new object of a class that contains an array

I'm new at java, not doing well, need some help. 我是java的新手,表现不佳,需要一些帮助。 I have a class called "RestaurantObject" and I am trying to create an object from that class in my main. 我有一个名为“ RestaurantObject”的类,并且正在尝试从我的主类中创建一个对象。 I'm having a problem because one of the variables in that object is an array. 我有一个问题,因为该对象中的变量之一是数组。 I'm just really not sure what to put there. 我真的不知道该放在哪里。

Here is my main: 这是我的主要内容:

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

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

Here is the code from my class "RestaurantObjects" 这是我的类“ 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;
}

}

I know I'm not doing this right. 我知道我没有这样做。 Please help! 请帮忙!

Thank you! 谢谢!

Also, please correct me if any of my terminology is wrong. 另外,如果我的任何术语错误,请更正我。

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

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

I'm guessing that you haven't learned Java varargs yet, but this is a perfect case where to use them. 我猜您还没有学过Java变量,但这是在哪里使用它们的绝妙案例。 Then you could go 那你可以走了

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

and later, 然后,

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

If you can't use or haven't learned varargs yet, @fvu version 2 is my preference. 如果您不能使用varargs或还没有学习过varargs,则首选@fvu版本2。

Well there are two options: 好,有两种选择:

1 Create the array before your create your RestaurantObject (The class should really just be called Restaurant 1在创建RestaurantObject之前先创建数组(该类实际上应该仅称为Restaurant

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

2 Intialize an array with a static intializer in the constructor call for RestaurantObject 2在RestaurantObject的构造函数调用中使用静态初始化器初始化数组

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

You can do 你可以做

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

or 要么

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

or 要么

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

A note regarding the latter: when you create an array like this, you have to know its size, which can be quite annoying sometimes. 关于后者的说明:当您创建这样的数组时,您必须知道其大小,有时可能会很烦人。 That's why many people will prefer to use ArrayList s which behaves more or less like an elastic array, ie it autoexpands when n item is added. 这就是为什么许多人会更喜欢使用ArrayList的原因,它的表现或多或少类似于弹性数组,即添加n项时会自动展开。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM