import java.lang.reflect.Field;
public class TestYinYong {
public static void main(String[] args) {
Integer a = 1,b=2;
System.out.println("a = "+a);
System.out.println("b = "+b);
//swap1(a,b);
swap2(a,b);
System.out.println("a = "+a);
System.out.println("b = "+b);
}
private static void swap1(Integer a, Integer b) {
Integer tmp = a;
a = b;
b = tmp;
}
private static void swap2(Integer c, Integer d) {
try {
Field field = Integer.class.getDeclaredField("value");
//将override设置成true,可以修改final修饰的Integer的属性
field.setAccessible(true);
Integer tmp = new Integer(c);
field.set(c, d.intValue());
field.set(d, tmp);
} catch (Exception e) {
e.printStackTrace();
}
}
}基本数据类型中值引用的简单demo
最新推荐文章于 2025-06-10 13:06:01 发布
本文介绍了一种使用Java反射机制实现的特殊整数对象交换方法,该方法绕过了Java中Integer对象不可变性的限制,直接修改对象内部状态来达到交换的目的。通过这种方式,可以在不改变方法参数传递方式的情况下实现值交换,为理解Java内存模型和反射API提供了实践案例。
640

被折叠的 条评论
为什么被折叠?



