【发布时间】:2018-01-03 12:57:18
【问题描述】:
我正在尝试返回 stats 对象。
但我得到了
从内部类引用的局部变量必须是 final 或 有效地最终
在stats = statistics; 上我如何返回对象但确保.close(); 已运行?
public static Statistics getStatistics(String environmentName) {
Container container = getContainer(environmentName);
Statistics stats = new Statistics();
try {
dockerClient().statsCmd(container.getId()).exec(new ResultCallback<Statistics>() {
@Override
public void onStart(Closeable closeable) {
}
@Override
public void onNext(Statistics statistics) {
stats = statistics;
}
@Override
public void onError(Throwable throwable) {
}
@Override
public void onComplete() {
}
@Override
public void close() throws IOException {
}
}).close();
} catch (IOException e) {
e.printStackTrace();
}
return stats;
}
【问题讨论】:
-
本地内部类可以访问包含它的类的字段以及定义它的块的字段。但是,这些类只有在声明为 final 或实际上是 final 时才能访问包含它的块的变量或参数。
-
@Brijesh 在简单的英语中是什么意思?
-
如果我输入
Statistics表示我不能为最终赋值... -
@sadas 根据github.com/docker-java/docker-java/blob/master/src/main/java/…,看起来
exec()方法正在返回一些东西,很可能是您作为参数传递的对象。创建该类型的普通类,将结果存储在字段中。稍后,您可以从exec()调用的返回对象中访问该字段。
标签: java