소스 파일 하나에 톱레벨 클래스를 여러개 선언하는 것은 아무런 득이 없을 뿐더러 심각한 위험을 감수해야하는 행위이다. 톱 레벨 클래스를 여러개 선언하면 한 클래스를 여러가지로 정의할 수 있으며, 그중 어느 것을 사용할지는 어느 소스 파일을 먼저 컴파일하느냐에 따라 달라지기 때문이다.
// Utensil.java에 두 클래스 정의(잘못된 방법)classUtensil {staticfinalString NAME ="pan";}classDessert {staticfinalString NAME ="cake";}
// Dessert.java에 두 클래스 정의(잘못된 방법)classUtensil {staticfinalString NAME ="pot";}classDessert {staticfinalString NAME ="pie";}