我在最后5分钟一直盯着屏幕,似乎无法弄清楚我做错了什么:
class Example {
private final Set<String> values;
public Example(String... values) {
values = new HashSet<String>(Arrays.asList(values));
}
}
Run Code Online (Sandbox Code Playgroud)
我很惊讶为什么String[]无法转换List<String>为初始化HashSet<String>它.
我收到了构建错误:
Run Code Online (Sandbox Code Playgroud)incompatible types: java.util.HashSet<java.lang.String> cannot be converted to java.lang.String[]
我的任务有什么问题?
您错过了实际访问私有字段的资格.目前,您正在尝试重新分配传递给构造函数的参数.相反,您应该使用以下代码:
public Example(String... values) {
this.values = new HashSet<String>(Arrays.asList(values));
}
Run Code Online (Sandbox Code Playgroud)
通过使用自Java 7以来可用的"Diamond Operator",可以进一步缩短这一点:
public Example(String... values) {
this.values = new HashSet<>(Arrays.asList(values));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
243 次 |
| 最近记录: |