什么是Field中原始getter/setter的目的?

Arc*_*ord 7 java reflection

在课堂上的public Object get(Object obj)方法文档中Field说明了这一点

如果对象具有基本类型,则该值自动包装在对象中.

并且public void set(Object obj, Object value)

如果基础字段是基本类型,则尝试进行解包转换以将新值转换为基元类型的值.

所以,我说的对,具体的原始吸气的唯一目的和setter喜欢getIntsetInt是为了防止冗余的类型转换?
由于此代码工作正常

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)

我问的是,除了性能原因,是否有人知道需要您使用这些方法的场景.

dim*_*414 0

这是为了类型安全和效率。从另一种角度考虑——这些get*()方法是访问原始字段的预期get()方法,而通过这样做恰好也可以工作,但需要装箱/拆箱。

换句话说,get()在原始字段上使用的唯一原因是您提前不知道其类型。