Java 在内部类运行中使用变量
嘿:)我对变量有问题。我想知道methode run()是如何看到“l”和“a”的Java 在内部类运行中使用变量,java,multithreading,runnable,Java,Multithreading,Runnable,嘿:)我对变量有问题。我想知道methode run()是如何看到“l”和“a”的 public static void startDraw(String[] players) { final DrawGame a = new DrawGame(players); for ( Player b : a.getPlayers()){ final Player l = b; Runnable q = n
public static void startDraw(String[] players) {
final DrawGame a = new DrawGame(players);
for ( Player b : a.getPlayers()){
final Player l = b;
Runnable q = new go();
}
}
protected static class go implements Runnable{
public go(){
}
public void run(){
while (a.finished()!= true){
l.drawLine();
}
}
Thread t = new Thread(new go()).start();
}
我想知道methode run()如何看到“l”和“a”
因为您的内部类go
是方法局部内部类,a
和l
是同一方法中的方法局部最终变量go()
如果您将变量声明为final,则内部类知道它们不会更改,因此他们只需将其复制一份供私人使用,在原始值从堆栈中删除后,该副本就会存在。变量是为在类中使用它的人准备的。您确定可以访问这些变量吗?在我看来,你还有其他更大范围的变量同名,否则这段代码将无法编译。如果你想让玩家画线,但它们只在StartDraw中给出,作为旁注,我会给你的变量起更多有意义的名字。如果你在6个月后回到这个代码,你不可能仍然知道a、b、l或q是什么。。这个代码有效吗?