Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在内部类运行中使用变量_Java_Multithreading_Runnable - Fatal编程技术网

Java 在内部类运行中使用变量

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

嘿:)我对变量有问题。我想知道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 = 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是什么。。这个代码有效吗?