我想提出一个bukkit插件,和我使用所谓的MCStats的API,创建图形类的实例,你添加绘图仪是这样的...遍历HashMap来创建内部功能
mobs.addPlotter(new Metrics.Plotter("Player") {
@Override
public int getValue() {
return 0;
}
});
但是我想从一个HashMap和idealy像这样得到的数值...
for(String mob: mobNames) {
mobs.addPlotter(new Metrics.Plotter(mob) {
@Override
public int getValue() {
return Stats.getValue(mob);
}
});
}
但很明显,它不能访问暴徒的变量,如果我将它设置为最后,它仍然不会能够改变循环。我该如何解决这个问题?
为什么'getValue()'这里不使用传递给绘图仪构造函数的怪名? – sjr
为什么不将循环变量设置为'final'工作?这样做会导致它改变每次迭代,但不会*在每次迭代中*。 –
@sjr - 将'mob'传递给构造函数不会为该名称创建新的作用域; 'getValue'中'mob'的引用是循环变量,而不是构造函数参数。 OP的问题是内部类不能引用局部变量,除非它是'final'。 –