这是我第一次使用反射,我遇到了以下麻烦。
我有这个班级
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类型。
我该如何解决?
答案 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
。原始double
由Double.TYPE
引用。
同样,您还有Integer.TYPE
,Long.TYPE
等