日期:2014-05-20  浏览次数:20817 次

动态强制类型转换的问题
在使用DynaClass,DynaBean时遇到一个类型强制转化的问题
例如:

Class   classType   =   ***.class;//***可以是String,Double等类型
Object   newObj   =   "123 ";
String   a   =   (classType)newObj;//这句是错的

意思就是说属性的类型及值都是动态的,当我们获得到这个属性的值对象时,就需要根据其类型来强制转换。但是上面想当然的代码是错的。

该怎么写呢?

------解决方案--------------------
classType 只是class类型,string又不是class类型,所以不对

可以用class.getName()来得到这个包的名字,然后截取最后一个.号的后面部分,然后转换
------解决方案--------------------
楼上的方法不对,class.getName() 出来的只是字符串,字符串不能放在强制转换括号内当作类来用的。

还有楼主,String a = (classType)newObj; 这句话有明显示的语法错误,( )内只能写类名,而不能写变量名,再者,就算你把它换成 Double 还是会报错了,只有 Double 和 String 本身就是风马牛不相及(不存在继承、实现关系)的两个类,只有父类、子类或者是接口、实现才能做这样的转换。
------解决方案--------------------
你可以显示的定义objec类,不用默认的,需要进行转换的类型继承此类,以后就可以把object强制转化成他的子类..
------解决方案--------------------
Java 中好像不能实现这样的转换,就算使用

Class.forName( "Double ").newInstance(); 得到的还是一个 Object,

大概你只通过罗列所有需要用到的类,再用判断语句一个一个转换了,因为 ( ) 里只能写类的名字,而不能写其他的东西。

肯定高手帮忙吧!!!
------解决方案--------------------
如果你的Object都不是Date,那你还能怎么处理 ?


如果你的Object是String,那当然需要自己手工parse一个Date出来!