无法分配最终的局部变量标记,因为它是在封闭类型中定义的

时间:2017-02-15 02:24:58

标签: java

我在The final local variable token cannot be assigned, since it is defined in an enclosing typetoken内的forEach处收到lambda编译错误。我想要做的就是将列表中唯一的项目分配给token变量。

PS:我确信list中只有一个项目。

    public static void main(String[] args) throws Exception {
        final StringBuilder token;
        AuthResponse authResponse = new AuthResponse();
        authResponse.getTokens().forEach(item -> {
            token.append(item.getToken());
        });
    }

如果我将token声明为Instance variable,则没有问题。但还有其他办法吗?

有一些相关的帖子,但我想了解此问题的解决方案

编辑:我已将问题更新为StringBuilder而不是String

1 个答案:

答案 0 :(得分:1)

您需要指定一个实例:

StringBuilder token = new StringBuilder();

但你为什么要重新发明轮子;使用类似的东西:

String tokens = new AuthResponse().getTokens().stream()
    .map(Object::toString)
    .collect(Collectors.joining(","));