0

重複の可能性:
リフレクションによるキャストと Class.cast() の使用

Javaプログラミングに関する質問があります。関数に渡される文字列パラメータを介してキャスト タイプを選択できるようにしたいと考えています。ご覧のとおり、サブタイプにキャストする必要があるメイン クラスがあります。これらのサブタイプは、ユーザーが指定する必要があります。どうすればそれができますか?

public void casting(String subClassCast)
 {
      MainClass mainClass = (subClassCast) MainClassFactory.get();
 }
4

2 に答える 2

2

あなたが書いたキャストは何もしません。

キャストは、スーパークラスのオブジェクトをサブクラス参照に割り当てるのに役立ちます

Object obj = a.toString();
String str = (String) obj;  // The compiler can't check that at runtime obj will be
                            // a String, so the programmer "forces" the compiler to
                            // allow the assignation

キャストが必要ですが、

Object obj2 = (String) obj;

ClassCastExceptionキャストは何もしません ( ifが文字列でない場合をスローする以外obj)。

于 2012-12-19T08:56:45.813 に答える
0

あなたがすることができます:

MainClass mainClass = Class.forName(subClassCast).cast(MainClassFactory.get());

しかし、それが良い考えかどうかはわかりません。

于 2012-12-19T08:56:25.727 に答える