2014-09-25 3 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() 
*///:~ 

"Think in Java"를 공부 중입니다. 나는 왜 위의 코드가 각 클래스를 테스트 할 수있는 방법이어야하며 TestBed $ Tester.class 파일을 삭제하여 제거 할 수 있는지 궁금하다.Java의 테스트 메소드로 중첩 클래스

오류 msg는 프로그램 항목으로 TestBed 클래스에 public static void main (String [] args)이 있어야한다고 지시합니다.

자바 컴파일 버전 : javac의는 1.7.0_40

답변

1

main 방법은 공공 최상위 클래스에 있어야합니다. 이것은 java 파일과 이름이 같은 파일입니다. 여기는 TestBed -class입니다.

현재 main 메서드는 내부 클래스 (즉, TestBed$Tester)이며 프로그램을 시작하는 데 사용할 수 없습니다.

편집 : 잘못했을 수 있습니다. , 내가 아는

java TestBed$Tester 
+0

...하지만이 코드는 "자바 생각에서이다 : 나는 당신이 언급 한 책에서보기를했다, 당신은 서면으로 Command Promt에서 내부 클래스를 실행할 수 것 같습니다 제 4 차 ED ". 이 접근법을 우리에게 가르쳐 준 이유를 알고 싶습니다. – shanwu

+0

@shanwu 나는 나의 대답을 업데이트했다. (당신이 내 이전 의견에 의해 통지를 받았는지 확실하지 않은 경우 삭제 된 것입니다.) –

+0

# ~/java_practice/innerclasses $ javac TestBed.java # ~/java_practice/innerclasses $ java TestBed $ Tester 오류 : TestBed에서 main을 찾을 수 없습니다. 메서드 ... public static void main (String [] args) Java 컴파일러 버전은 무엇입니까? 나는 이것이 자바 컴파일러 버전과 관련이 있는지 모른다 ... – shanwu