2008-10-02 121 views
1

我需要在运行时获取对象的类。如何获得JavaME中的抽象类(对象)的类?

对于非抽象类,我可以这样做:

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

它将在CLDC1.1,但不能在CLDC1.0 :: http://blog.javia.org/java-class -literal-on-cldc/ – funkybro 2010-02-12 10:22:10

0

您在抽象的情况下,想要的代码是:

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

虽然我个人不会理会整个定义的常量,只用于MyAbstract.class。

我本来希望你写的代码已经返回了类'Class',而不是类'Object'。

+0

我解释得很差。我需要返回一个相关的帮助类的类和静态变量只是为了方便 非常感谢您的答复 – 2008-10-02 16:22:53

0

我想这里需要更多的信息。 在Java中,抽象类无法实例化。 这意味着运行时的对象不能使其类为抽象类。 它需要是一个实现所有抽象方法的子类。 在JavaME中,Object.getClass()应该是你所需要的。 你是否想在运行时重构你的类层次结构?

在这种情况下,你可以实现这样的事情,而不是:

public String getClassHierarchy() { 
    return super.getClassHierarchy() + ".MyAbstract"; 
}