1

我必须为 ArrayList 创建一个构造函数。所以基本上我想要的是这个构造函数创建一个 ArrayList。

    public Recipe(String[] modifications){

The problem is, it should give something like(example):

String[] modifications = [heatup, cooldown, mix, heatup]

构造函数会像这样工作吗:

    Recipe(heatup, cooldown, mix, heatup)

还是我需要将其更改为:

    Recipe(modifications){
    this.myArrayList[1] = modifications[1]
    .
    .
    .
    }

谢谢,如果我的代码中有一些大错误,我很抱歉,仍在学习我的 Java 代码。

4

7 回答 7

3

你可以这样定义它:

public Recipe(String... modifications)

这将为您提供一个变量参数列表,因此您的构造函数将像这样工作 Recipe(heatup, cooldown, mix)

在构造函数内部,您可以像使用数组一样使用它。

于 2012-05-15T07:48:21.923 回答
2

将构造函数更改为可变参数:

public Recipe(String ... modifications){

但是您可以访问modificationsString[]这是一个数组,而不是 ArrayList。如果您想要一个 ArrayList,请执行以下操作:

private final List<String> list;
public Recipe(String ... modifications){
    this.list = new ArrayList<String>(Arrays.asList(modifications));
}
于 2012-05-15T07:48:28.590 回答
2

您可以使用可变参数创建一个构造函数:

public Recipe(String... modifications){...}

那么你可以这样称呼它:

Recipe(heatup, cooldown, mix, heatup);

请注意,如果您(计划)有其他构造函数具有潜在冲突的参数列表,则应该小心使用可变参数。但是,如果这是您唯一的构造函数,则可变参数应该没问题。

于 2012-05-15T07:48:51.287 回答
2

你可以在你的构造函数中这样做

ArrayList<String> list=new ArrayList<String>();
        public Recipe(String[] modifications){

   // String a[]={"asas"};

            list.addAll(Arrays.asList(modifications));
于 2012-05-15T07:49:13.020 回答
2

第二个......当然,for如果您只想复制元素,您可以使用 a 。

您也可以将参数传递的数组复制到您的类属性/方法变量中,除非有其他动机不这样做。

最后,请记住它会类似于Recipy(String[] modifications) {. 您必须定义参数的类型。

现在终于,myArrayList 是一个有点不幸的数组名称(API 中有一个名为 ArrayList 的类)。

于 2012-05-15T07:49:21.813 回答
2

您想要的是能够传递不确定数量的参数:

public Recipe(String ... modifications) {

在构造函数内部,修改是一个数组。

这将适用于:

new Recipe("heatup", "cooldown", "mix", "heatup");

有了这个:

new Recipe();

有了这个:

new Recipe("heatup", "mix");
于 2012-05-15T07:50:06.807 回答
2

您可以使用varargs

public Recipe(String ... modifications) {
  // now you can use modifications as an array
  for (int f = 0; f < modifications.length; f++) {
     System.out.println("#" + f + ": " + modifications[f]);
  }
}

.

要使用您的课程,您只需编写:

  Recipe myRecipe = new Recipe("heatup", "mix");

.

于 2012-05-15T07:53:23.993 回答