无法从String数组创建Set

Sto*_*ica 6 java

我在最后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>它.

我收到了构建错误:

incompatible types: java.util.HashSet<java.lang.String> cannot be converted to java.lang.String[]
Run Code Online (Sandbox Code Playgroud)

我的任务有什么问题?

Vog*_*612 9

您错过了实际访问私有字段的资格.目前,您正在尝试重新分配传递给构造函数的参数.相反,您应该使用以下代码:

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)