[英]Set value to primitive type fields
这是我第一次进行反射,遇到以下麻烦。
我有这堂课
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类型。
我该如何解决?
那是因为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());
Double.class
引用包装器类java.lang.Double
。 Double.TYPE
引用原始double
。
同样,您还具有Integer.TYPE
, Long.TYPE
等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.