在课堂上的public Object get(Object obj)方法文档中Field说明了这一点
如果对象具有基本类型,则该值自动包装在对象中.
并且public void set(Object obj, Object value)该
如果基础字段是基本类型,则尝试进行解包转换以将新值转换为基元类型的值.
所以,我说的对,具体的原始吸气的唯一目的和setter喜欢getInt和setInt是为了防止冗余的类型转换?
由于此代码工作正常
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我问的是,除了性能原因,是否有人知道需要您使用这些方法的场景.
这是为了类型安全和效率。从另一种角度考虑——这些get*()方法是访问原始字段的预期get()方法,而通过这样做恰好也可以工作,但需要装箱/拆箱。
换句话说,get()在原始字段上使用的唯一原因是您提前不知道其类型。
| 归档时间: |
|
| 查看次数: |
238 次 |
| 最近记录: |