2014-09-25 45 views
0
//: innerclasses/TestBed.java 
// Putting test code in a nested class. 
// {main: TestBed$Tester} 

public class TestBed { 
    public void f() { System.out.println("f()"); } 
    public static class Tester { 
    public static void main(String[] args) { 
     TestBed t = new TestBed(); 
     t.f(); 
    } 
    } 
} /* Output: 
f() 
*///:~ 

我正在學習「用Java思考」。我只是想知道爲什麼上面的代碼不起作用,這應該是測試每個類的方法,並且可以通過刪除TestBed $ Tester.class文件來刪除。作爲Java中的測試方法的嵌套類

錯誤消息指示應該有一個公共靜態void main(String [] args)作爲程序入口在TestBed類中。

Java的編譯版本:javac的1.7.0_40

回答

1

main方法必須是公共的頂級類。這是與java文件同名的那個。在這裏,這是TestBed級。

當前main方法處於內部類(即TestBed$Tester)中,並且不能用於啓動程序。

編輯:我可能錯了。我參加了你所提到的書一看,它看起來像你可以通過書面形式運行從Command Promt內部類:

java TestBed$Tester 
+0

我知道......但是這個代碼是「想在Java中,第四ED「。我只想知道它爲什麼教會我們這種方法的原因。 – shanwu 2014-09-25 05:29:12

+0

@山武我已經更新了我的答案。 (不知道是否因爲它被刪除而被我以前的評論通知) – 2014-09-25 14:40:50

+0

#〜/ java_practice/innerclasses $ javac TestBed.Java #〜/ java_practice/innerclasses $ java TestBed $ Tester error:TestBed can not find main方法... public static void main(String [] args) 什麼是您的java編譯器版本?我不知道這是否與Java編譯器版本有關... – shanwu 2014-09-26 00:23:31