2014-02-24 2 views
0

jar 파일로 컴파일하고 패키지 한 두 개의 Java 파일이 있습니다.Reflection이이 Main 클래스를 애플릿이 아닌 Object로 표시하는 이유는 무엇입니까?

// Main.java 
public class Main extends GameWindow { 
    public static void main(String[] args) { 
    System.out.println("hello reflection!"); 
    } 
} 

// GameWindow.java 
import java.applet.Applet; 
public abstract class GameWindow extends Applet { } 

Java Reflection 라이브러리를 사용하여 Main 및 GameWindow의 부모 클래스를 인쇄하고 있습니다.

Class<?> main = Class.forName("Main"); 
System.out.println(main.getSuperclass()); 

Class<?> gamewindow = Class.forName("GameWindow"); 
System.out.println(gamewindow.getSuperclass()); 

나는 Main's 슈퍼 클래스가 GameWindowGameWindow's 슈퍼 클래스 Applet을 할 것으로 기대하지만 위의 코드를 실행하면, 내가 받고있어 출력은 이러한 원인을

class java.lang.Object 
class java.applet.Applet 

입니다 결과?

+0

Main이 확장되지 않은 이전 버전의 객체 코드로 실행 중입니다. 다시 컴파일하고 다시 테스트하십시오. – EJP

+0

방금 ​​재 컴파일하고 테스트하여 동일한 결과를 얻었습니다. – pLiKT

+0

그것은 나를 위해 잘 작동합니다. 'Main'은'GameWindow'를 확장합니까? 'GameWindow m = new Main()'을 추가하고 다시 컴파일 해보십시오. –

답변

0

나는 틀린 종류를 찾아 보는 것을 거의 확실하다. 사용해보기

Class<?> main = Class.forName("yourpackage.Main"); 
+0

'Main'에 대한 패키지 문이 없으므로 이름없는 패키지에 포함됩니다. 이름없는 패키지에서'Main' 클래스를 참조 할 수있는 방법이 있습니까? – pLiKT