在使用DynaClass,DynaBean时遇到一个类型强制转化的问题
例如:Class classType = ***.class;//***可以是String,Double等类型
Object newObj = "123";
String a = (classType)newObj;//这句是错的意思就是说属性的类型及值都是动态的,当我们获得到这个属性的值对象时,就需要根据其类型来强制转换。但是上面想当然的代码是错的。该怎么写呢?

解决方案 »

  1.   

    classType 只是class类型,string又不是class类型,所以不对可以用class.getName()来得到这个包的名字,然后截取最后一个.号的后面部分,然后转换
      

  2.   

    楼上的方法不对,class.getName() 出来的只是字符串,字符串不能放在强制转换括号内当作类来用的。还有楼主,String a = (classType)newObj; 这句话有明显示的语法错误,( )内只能写类名,而不能写变量名,再者,就算你把它换成 Double 还是会报错了,只有 Double 和 String 本身就是风马牛不相及(不存在继承、实现关系)的两个类,只有父类、子类或者是接口、实现才能做这样的转换。
      

  3.   

    sorry,没太明白。我们用DynaClass定义了动态类,其中DynaProperty的一些动态属性(name/type)。
    然后从其他源 捕获到相应的属性值,放入到这个DynaClass的DynaBean中。但是获得的都是object,我们需要根据DynaProperty设置的type[例如String,Double等],动态地来做强制转换,用dynaBean.set(name,(要转化的类型)value)写入。
      

  4.   

    谢谢各位。例子写的不好,误导了。
    真实需求就是 把捕获的object按照指定的类型进行转换,才能正确存储。
      

  5.   

    DynaProperty本身的set方法已经做好转换了,你还哪里需要做转换啊
      

  6.   

    你可以显示的定义objec类,不用默认的,需要进行转换的类型继承此类,以后就可以把object强制转化成他的子类..
      

  7.   

    Java 中好像不能实现这样的转换,就算使用Class.forName("Double").newInstance(); 得到的还是一个 Object,大概你只通过罗列所有需要用到的类,再用判断语句一个一个转换了,因为 ( ) 里只能写类的名字,而不能写其他的东西。肯定高手帮忙吧!!!
      

  8.   

    你使用了 Apache Commons 类库,难怪我在 JDK 中找不到这些类。
      

  9.   

    to ChDw(米) :您确定吗?set(String,Object),第二个参数要跟DynaProperty设定的类型一致才可以啊。譬如定义的是Date型的,则Object必须是个Date才可以。我们目前直接set是报错的。to bao110908(bao)(bao) :没办法。我现在就一个个判断的了。以后再找好的实现吧。谢谢各位。
      

  10.   

    如果你的Object都不是Date,那你还能怎么处理 ?
    如果你的Object是String,那当然需要自己手工parse一个Date出来!