six*_*ude 5 java arrays collections constructor list
在Java中有没有一个构造函数可以接受数组或集合?我一直在摆弄这个问题,但我不认为这是可能的.
我想能够初始化MyClass,像这样:
MyClass c = new MyClass({"rat", "Dog", "Cat"});
Run Code Online (Sandbox Code Playgroud)
像这样:
LinkedList <String> l = new <String> LinkedList();
l.add("dog");
l.add("cat");
l.add("rat");
MyClass c = new MyClass(l);
Run Code Online (Sandbox Code Playgroud)
这就是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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Nik*_*bak 20
您可以声明两个构造函数并从第一个调用第二个:
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
}
}
Run Code Online (Sandbox Code Playgroud)
电话看起来像
new MyClass(new ArrayList<String>());
new MyClass("dog", "cat", "rat");
new MyClass(new String[] {"rat", "Dog", "Cat"});
Run Code Online (Sandbox Code Playgroud)
由于第一个构造函数中只有一行代码,因此它非常简约.