2012-03-09 15 views
0

シナリオは次のとおりです。型への型の変数「オブジェクト」にキャスティング「クラス」

Object anObj="7"; 
Object anotherObject="7.77"; 
Class aClass=Class.forName("java.lang.Integer"); 
Class anotherClass=Class.forName("java.lang.Double"); 

私はanObjaClassの型とanotherObjectanotherClassに型を型キャストします。

クラス変数 aClassanotherClassの値は変更になる場合があります

ので、私は彼らがparseXXX()メソッドを使用してキャストしたいいけない...

私はaClass.cast(anObj);を使用してみましたが、誰も私を助けることができるそれがInstantiationException を投げますか?

ありがとうございます。 ArK!

+3

オブジェクトが文字列であるため、これらの型キャストが失敗するにanObjとanotherObjectをキャストする必要があります - あなたがすることはできません*キャスト*に文字列 ' 「整数」または「ダブル」である。だからこそ、キャストは失敗する。あなたはキャストの観点から考えることをやめ、文字列変換を実行するコンストラクタやメソッドを呼び出すという観点から考える必要があります。 –

+0

Jonが正しいです。 Objectが実際にIntegerであるが、なんらかの理由でObject変数にある場合は、(ObjectからIntegerのように)ダウンキャストできます。 – Tom

+0

uジョンとトムに感謝... – arunrathnakumar

答えて

1

AClassはとanotherClassにそれらをキャストする前に、それぞれのクラス

aClass.cast(Integer.parseInt((String) anObj)); 
anotherClass.cast(Double.parseDouble((String) anotherObject)); 
1

anObjおよびanotherObjectは、Stringのインスタンスです。ターゲットクラスが何であっても、それらをキャストすることはできません。文字列インスタンスを特定の型に変換するメソッド(Integer.parseInt()など)が必要です。

これが機能するには(「クラスには静的なfromString(String)メソッドが必要です」などのような種類のコンベンションが必要です。その後、リフレクションを使用して変換メソッドにアクセスできます。

関連する問題