在 Java 中有没有一个构造函数可以接受数组或集合?我已经摆弄了一段时间,但我认为这是不可能的。
我希望能够像这样初始化 MyClass
:
MyClass c = new MyClass({"rat", "Dog", "Cat"});
像这样:
LinkedList <String> l = new <String> LinkedList();
l.add("dog");
l.add("cat");
l.add("rat");
MyClass c = new MyClass(l);
这就是 MyClass 的样子。我怎样才能使 XXX 成为这样才能起作用?我知道我可以重载构造函数,但如果我可以最小化代码那该多好,对吧?
public class MyClass{
private LinkedHashSet <String> myList;
public MyClass(XXX <String> input){
myList = new LinkedHashSet <String> ();
for(String s : input){
myList.put(s);
}
}
}
最佳答案
您可以声明两个构造函数并从第一个开始调用第二个:
class MyClass {
public MyClass(String... x) {
// for arrays
// this constructor delegate call to the second one
this(Arrays.asList(x));
}
public MyClass(List<String> x) {
// for lists
// all logic here
}
}
调用看起来像
new MyClass(new ArrayList<String>());
new MyClass("dog", "cat", "rat");
new MyClass(new String[] {"rat", "Dog", "Cat"});
由于第一个构造函数中只有一行代码,因此非常简约。
关于Java:一个构造函数或方法将接受数组或集合或列表或......?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3221411/