将值设置为基本类型字段

时间:2014-05-08 10:02:46

标签: java reflection

这是我第一次使用反射,我遇到了以下麻烦。

我有这个班级

public class MyObject {

    private String description;

    private int number;

    private double value;


    //Constructor getter and setter
}

现在我正在尝试设置MyObject字段的值。

    Class c = Class.forName("myPackage.MyObject");
    Field [] fields = c.getDeclaredFields();


    for(Field field: fields){

         if(f.getType().equals(Double.class)){
        //Do somethings
        }
        else if(f.getType().equals(Integer.class)){
        //Do somethings
        }
        else{
        //Do somethings
        }


    }
}

但我永远无法过滤int和double类型。

我该如何解决?

2 个答案:

答案 0 :(得分:0)

这是因为Double不是double。试试这个

 if(f.getType() == double.class){
    //Do somethings

 } else if(f.getType() == int.class){
    //Do somethings

 } else {
    //Do somethings
 }

一种向自己证明这一点的简单方法是

 System.out.println(f.getType());

答案 1 :(得分:0)

Double.class指的是包装类java.lang.Double。原始doubleDouble.TYPE引用。

同样,您还有Integer.TYPELong.TYPE