最近五分钟我一直盯着屏幕,似乎无法弄清楚我在做什么错:
class Example {
private final Set<String> values;
public Example(String... values) {
values = new HashSet<String>(Arrays.asList(values));
}
}
我很惊讶为什么
String[]
无法转换为List<String>
来用它初始化HashSet<String>
。我收到构建错误:
我的作业怎么了?
最佳答案
您缺少实际访问私有(private)字段的资格。当前,您正在尝试重新分配传递给构造函数的参数。相反,您应该使用以下代码:
public Example(String... values) {
this.values = new HashSet<String>(Arrays.asList(values));
}
通过使用“钻石运算符”,甚至可以进一步缩短该时间,该功能自Java 7开始就可以使用:
public Example(String... values) {
this.values = new HashSet<>(Arrays.asList(values));
}