2013-09-30 33 views
-3

第一个例子是可能的,但是例子2是不可能的,并且导致编译器的“非法表达式”的错误信息。为什么不能在run()方法中定义一个方法?为什么不能在线程的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 

     } 

    } 
} 
+2

这不会编译的原因:它是非法的。 – Fildor

+0

这在其他语言中可能完全合法,但在Java中不适用。 – mavrosxristoforos

+1

嗯......这有点像问自行车为什么没有翅膀。 –

回答

1

如果实际在方法内声明方法,将始终导致错误。 Java是严格面向对象的,它需要方法属于一个类。换句话说,你必须在课堂上声明你的方法。 JavaScript,Python和其他面向对象的语言放松了这个严格的规则,但Java没有。阅读this thread on stackoverflow。这几乎是完全相同的话题。

4

的Java不会让你定义一个方法中的方法。它甚至没有任何可能的语义规则。你希望例子2做什么?

很清楚例子1的功能。您创建一个名为inter的空方法。然后,在run中,您可以调用它。

但是应该怎么做?您在run内部创建了一个方法inter。那么,那会做什么?你什么时候打电话?

+2

+1的问题,实际上这些都是答案:) –

+0

this在经典哲学中是一个很好的答案 – Kevik

0

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

0

run()是一种方法,你不能在方法内部定义新的方法。 方法在类中定义不在方法内部

相关问题