【发布时间】:2018-09-11 14:08:12
【问题描述】:
我有以下代码:
public void visitStrAttribute(String attributeName, Consumer<String> attributeConsumer) {
IntConsumer intConsumer;
int stringByteArrayLength = 0;
visitIntAttribute("", (IntValue) -> stringByteArrayLength = IntValue);
attributeConsumer
.accept(new String(readInputStream(stringByteArrayLength), StandardCharsets.UTF_8));
}
我需要在 lambda 中设置 stringByteArrayLength,但出现一条错误消息,它告诉我 Local variable stringByteArrayLength defined in an enclosing scope must be final or effectively final。
我该如何解决这个问题?
【问题讨论】:
-
你需要一个对象,这样你就可以改变它的属性值,而不必修改局部变量。