在Field
类的public Object get(Object obj)
方法的文档中,声明
如果对象具有基元,则会自动将其包装在对象中 类型。
和public void set(Object obj, Object value)
那个
如果基础字段是基本类型,则解包 尝试转换将新值转换为a的值 原始类型。
我是否正确,getInt
和setInt
等特定原始getter和setter的唯一目的是阻止冗余类型转换?
由于此代码工作正常
public class Test{
int i = 1;
public static void main(String[] args) throws Exception{
Test inst = new Test();
Class<?> clazz = inst.getClass();
Field fi = clazz.getDeclaredField("i");
int ii = (int) fi.get(inst);
Integer iii = new Integer(ii * 2);
fi.set(inst, iii);
}
}
我问的是,除了性能原因,有人知道需要您使用这些方法的场景。
答案 0 :(得分:0)
它的类型安全性和效率。另一方面考虑一下 - get*()
方法是用于访问原始字段的方式,并且通过get()
这样做恰好也可以工作但需要装箱/拆箱
换句话说,在原始字段上使用get()
的唯一原因是,如果您事先不知道其类型。