我必须为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代码。
答案 0 :(得分:4)
您可以这样定义:
public Recipe(String... modifications)
这将为您提供一个变量参数列表,因此您的构造函数将如下所示:Recipe(heatup, cooldown, mix)
。
在构造函数内部,您可以像使用数组一样使用它。
答案 1 :(得分:2)
将构造函数更改为varargs:
public Recipe(String ... modifications){
然后您可以modifications
访问String[]
,但这是一个数组,而不是ArrayList。如果您需要ArrayList,请执行以下操作:
private final List<String> list;
public Recipe(String ... modifications){
this.list = new ArrayList<String>(Arrays.asList(modifications));
}
答案 2 :(得分:2)
你可以使用varargs参数创建一个构造函数:
public Recipe(String... modifications){...}
然后你可以这样称呼它:
Recipe(heatup, cooldown, mix, heatup);
请注意,如果您(计划)有其他构造函数具有可能存在冲突的参数列表,则应该小心使用varargs参数。但是,如果这是你唯一的构造函数,那么varargs应该没问题。
答案 3 :(得分:2)
你可以在构造函数中使用
ArrayList<String> list=new ArrayList<String>();
public Recipe(String[] modifications){
// String a[]={"asas"};
list.addAll(Arrays.asList(modifications));
答案 4 :(得分:2)
第二个......当然,如果您只想复制元素,可以使用for
。
此外,您可以将参数传递的数组复制到类属性/方法变量中,除非有其他动机不这样做。
最后,请记住它会像Recipy(String[] modifications) {
。您必须定义参数的类型。
现在终于,myArrayList是一个有点不幸的数组名称(API中有一个名为ArrayList的类)。
答案 5 :(得分:2)
你想要的是能够传递不确定数量的参数:
public Recipe(String ... modifications) {
在构造函数中,修改是一个数组。
这将适用于此:
new Recipe("heatup", "cooldown", "mix", "heatup");
并且用这个:
new Recipe();
并且用这个:
new Recipe("heatup", "mix");
答案 6 :(得分: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");