最近五分钟我一直盯着屏幕,似乎无法弄清楚我在做什么错:

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));
}

10-07 19:32
查看更多