Java 为什么不能在线程的run()方法中定义方法
第一个示例是可能的,但是示例2是不可能的,并且会导致来自编译器的非法启动表达式错误消息。为什么不能在run方法内部定义方法 例1Java 为什么不能在线程的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
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的重复,实际上这些都是答案:这是经典哲学的一个好答案