2012-03-09 53 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)方法”),然后您可以使用反射来获得转换方法。