2

文字列変数モデルにクラス名があるので、ロードされたクラスbaリフレクションの型にオブジェクトをキャストしたい

私がロードしているクラス名は「通知」で、文字列変数モデルで記述されています

String model = "Notification";   
Class<?> cls = Class.forName("biznea.zredzic.pojo."+model);

だから私はPojoAbstractすべてのpojoクラスをそのまま拡張する抽象クラスを持ってclsいますNotification.class

public class Notification extends PojoAbstract{...}

clsそして今、これを実際のクラスタイプにキャストしたい(通知)

WHAT_TO_PUT_HERE po = (WHAT_TO_PUT_HERE) gson.fromJson(json.toString(), cls);

タイプになりたくないpoタイプにPojoAbstractなりたいNotification

私は明確だったと思います:S

4

1 に答える 1

3

の方法public T cast(Object obj)を使用する必要がありClass<T>ます。

Object o = cls.cast(gson.fromJSon(json.toString(), cls));

ただし、コンパイル時に型がわからないため、静的宣言に直接割り当てることはできません。コンパイル時には何も想定できないため、宣言はできるだけ非特定にする必要があります。

于 2012-09-02T15:44:08.730 に答える