2008-10-02 2 views
1

런타임에 객체 클래스를 가져와야합니다. 내가 좋아하는 뭔가를 할 수있는 비 추상 클래스의 경우 JavaME에서 Abstract 클래스 (Object)의 클래스를 어떻게 구합니까?

:

public class MyNoneAbstract{ 
    public static Class MYNONEABSTRACT_CLASS = new MyNoneAbstract().getClass(); 

하지만 추상 클래스에 대한이 작동하지 않습니다 (항상 나에게 Object을 제공합니다)

public abstract class MyAbstract{ 
    public static Class MYABSTRACT_CLASS = MyAbstract.class.getClass(); 

이 코드를 실행합니다 JavaME 환경에서.

답변

3

당신은 단지 표현이 MyAbstract 나타내는 Class 객체를 돌려

MyAbstract.class 

이 필요합니다.

+2

그것은 의지를 :: http://blog.javia.org/java-class -literal-on-cldc/ – funkybro

0

당신이 추상적 인 경우에 원하는 코드는 다음과 같습니다

public abstract class MyAbstract{ 
    public static Class MYABSTRACT_CLASS = MyAbstract.class; 
} 

개인적으로 전역 상수 그냥 사용 MyAbstract.class을 정의 귀찮게하지 것이지만.

내가 작성한 코드에서 'Object'클래스가 아닌 'Class'클래스가 반환 될 것으로 기대했을 것입니다.

+0

나는 나 자신에 대해 잘 설명하지 않았다. 나는 관련 도우미 클래스의 클래스를 반환해야하며 정적 변수는 편의를 위해 단순하게 사용됩니다. 응답 해 주셔서 대단히 감사합니다. –

0

여기에 더 많은 정보가 필요하다고 생각합니다. Java에서 추상 클래스를 인스턴스화 할 수 없습니다. 즉, 런타임에 Object가 해당 클래스를 abstract로 가질 수 없음을 의미합니다. 모든 추상 메소드를 구현하는 서브 클래스 여야합니다. JavaME에서는 Object.getClass() 만 있으면됩니다. 런타임시 클래스 계층 구조를 어떻게 재구성하려고합니까? 이 경우

, 당신이 대신 같은 것을 구현할 수 :하지만 CLDC1.0에, CLDC1.1에

public String getClassHierarchy() { 
    return super.getClassHierarchy() + ".MyAbstract"; 
} 
관련 문제