2008-10-02 129 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"; 
}