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 为什么不能在线程的run()方法中定义方法_Java_Multithreading - Fatal编程技术网

Java 为什么不能在线程的run()方法中定义方法

Java 为什么不能在线程的run()方法中定义方法,java,multithreading,Java,Multithreading,第一个示例是可能的,但是示例2是不可能的,并且会导致来自编译器的非法启动表达式错误消息。为什么不能在run方法内部定义方法 例1 public class TextUpdater implements Runnable { public void inter(){ } @Override public void run() { inter(); } } } 例2,不可能 public class TextUpdate

第一个示例是可能的,但是示例2是不可能的,并且会导致来自编译器的非法启动表达式错误消息。为什么不能在run方法内部定义方法

例1

 public class TextUpdater implements Runnable {

    public void inter(){

    }

    @Override
    public void run() {

        inter();

    }

   }
}
例2,不可能

 public class TextUpdater implements Runnable {

    @Override
    public void run() {

       public void inter(){  // results in error

       }

   }
}

Java不允许在方法中定义方法。它甚至没有任何语义规则来说明它会做什么。您希望示例2做什么

很清楚示例1的作用。创建一个名为inter的方法,方法体为空。然后,在运行中,你称之为


但是2应该怎么做呢?您可以在内部运行中创建一个方法。那会怎么样?什么时候调用它?

,因为你不能在一个方法内。

不可能在另一个方法内创建一个方法。

run是一个方法,你不能在一个方法内定义新方法。
方法是在类部分而不是在方法内部定义的

如果您在方法中实际声明了一个方法,它将始终导致错误。Java是严格面向对象的,它要求方法属于类。换句话说,您必须在类中声明您的方法。JavaScript、Python和其他面向对象语言放松了这一严格规则,但Java没有。阅读这几乎是同一个主题。

这不编译是因为:它是非法的。这在其他语言中可能是完全合法的,但在Java中不是。嗯。。。这有点像是在问为什么自行车没有翅膀。问题可能是+1的重复,实际上这些都是答案:这是经典哲学的一个好答案