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

ここでもっと情報が必要だと思います。Javaでは、抽象クラスをインスタンス化することはできません。つまり、実行時のオブジェクトのクラスを抽象化することはできません。すべての抽象メソッドを実装するサブクラスである必要があります。JavaMEでは、Object.getClass()必要なのはこれだけです。実行時にクラス階層を再構成しようとしていますか?

その場合、代わりに次のようなものを実装できます。

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

抽象的なケースで必要なコードは次のとおりです。

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

私は個人的に定数を定義することを気にせず、全体で MyAbstract.class を使用しました。

あなたが書いたコードは、クラス「オブジェクト」ではなく、クラス「クラス」を返すと思っていました。

于 2008-10-02T13:44:36.610 に答える