【发布时间】:2012-05-25 22:36:17
【问题描述】:
我有这个代码:
public void onPlayerInteract(PlayerInteractEvent event) {
final Action action = event.getAction();
Location l1 = null;
Location l2 = null;
if (action == Action.LEFT_CLICK_BLOCK){
l1 = event.getClickedBlock().getLocation();
} else if (action == Action.RIGHT_CLICK_BLOCK) {
l2 = event.getClickedBlock().getLocation();
}
Thread t = new Thread() {
@Override
public void run() {
while(true) {
try {
Thread.sleep(1000*60*60);
Location maxx = l1.getX();
Location maxy = l1.getY();
Location maxz = l1.getZ();
Location minx = l2.getX();
Location miny = l2.getY();
Location minz = l2.getZ();
if(l1.getX() > l2.getX()){
//I can't execute this, errors!
}
} catch (InterruptedException ie) {
}
}
}
};
t.start();
它给了我错误,并说将 l1 和 l2 更改为决赛。如果我将 l1 和 l2 更改为 final,它会给我另一个错误,它说 l1 = etc.,它说要删除 final。
【问题讨论】:
-
如果一个变量是最终的,你不能重新分配它。你需要重新设计你的设计。
-
您还有另一个问题:l1 或 l2(或两者!)都将为 null,但您在取消引用之前没有检查 null。
-
另一个问题是他试图将 SO 用作教科书。只需阅读有关线程、Runnables、类、变量等的信息……然后重新实现您的解决方案。
标签: java variables global-variables