2012-03-09 81 views
0

方案是一個變量:鑄造類型爲「Object」一類「級」

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

這些類型轉換將失敗,因爲對象是字符串 - 你不能投* *字符串到'整數「或」雙「。這就是爲什麼'cast'失敗;你需要停止思考轉換,並開始考慮調用構造函數或方法來執行字符串轉換。 – 2012-03-09 06:58:16

+0

喬恩是對的;如果Object實際上是一個Integer,但由於某種原因在Object變量中,則只能向下轉換(如從Object到Integer)。 – Tom 2012-03-09 07:05:47

+0

謝謝你和湯姆... – arunrathnakumar 2012-05-29 06:33:32

回答

1

之前他們鑄造ACLASS和anotherClass,你需要轉換anObj和anotherObject到各個類別

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

anObjanotherObjectString實例。無論目標類是什麼,你都不能只投射它們,你需要一些方法(如Integer.parseInt()),它會將字符串實例轉換爲特定類型。

您需要某種約定才能工作(例如「類必須有靜態的fromString(String)方法」),然後您可以使用反射來獲得轉換方法。