如果只是简单的交换,会很简单,完全不需要反射
只是要改变的是Integer的值而不改变Integer这个对象,就需要反射了
public static void main(String[] args) {
Integer a = 2;
Integer b = 3;
swap(a, b);
System.out.println(a);
System.out.println(b);
}
static void swap(int a, int b) {
int temp = a;
try {
Class clazz = Integer.class;
Field value = clazz.getDeclaredField("value");
value.setAccessible(true);//将private方法变得可操作
value.setInt(a, b);
value.setInt(b, temp);
} catch (Exception ex) {
ex.printStackTrace();
}
}