1

我需要在运行时获取对象的类。

对于非抽象类,我可以执行以下操作:

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 环境中运行。

4

3 回答 3

3

您只需

MyAbstract.class

该表达式返回代表 MyAbstract 的 Class 对象。

于 2008-10-02T10:11:01.520 回答
0

您在抽象案例中想要的代码是:

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

尽管我个人不会费心定义常量,而是始终使用 MyAbstract.class 。

我本来希望您编写的代码返回类“类”,而不是类“对象”。

于 2008-10-02T13:44:36.610 回答
0

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

在这种情况下,你可以实现这样的东西:

public String getClassHierarchy() {
    return super.getClassHierarchy() + ".MyAbstract";
}
于 2008-10-03T13:46:46.973 回答