public static void setAttributeValue(Object obj, String attributeName, Object value){
.......
}问题是这样的,我要设置obj对象里属性attributeName的值为value;
这时你并不知道attributeName和value的类型。上面的方法体要怎么写?

解决方案 »

  1.   


    java.beans.PropertyDescriptor desc = new java.beans.PropertyDescriptor(attributeName, obj.getClass());
    desc.getWriteMethod().invoke(obj, value);
    前提是这个属必有set方法
      

  2.   

    这时候如果attributeName的类型是Integer而value的类型是String。那你这样赋值会报错的。
    Exception in thread "main" java.lang.IllegalArgumentException: argument type mismatch
      

  3.   

    不知道类型要写的代码太多了,以前写的早就找不到了,实在不想重来一遍,基础类型(还要细分是哪一种)、String、封装的类型,包括自定义类型,自定义类型里套用自定义类型,数组型(包括基础类型数组、对象型数组、List,List的嵌套),Map型(当然也包括嵌套的情况),所有的情况列出来之后,复杂类型里嵌套的情况肯定是要递归的!
    还是LZ自己慢慢来吧!
      

  4.   

    类型不匹配,说明call的时候有问题,处理异常就好了不然还想干嘛,把String转成Integer?万一String不能转Integer呢?
      

  5.   


    Integer.valueOf("123");
    Integer.valueOf("ffff",16);