JAVA_偶然看到的一道笔试题,挺好,记下来

1 //注:main方法内容中不允许改动,只许你写changeNum(a,b)算法
2 public static void main(String[] args) {
3     Integer a=1,b=2;
4     System.out.println("交换前a="+a+"   交换前b="+b);
5     changeNum(a,b);
6     System.out.println("交换后a="+a+"   交换后b="+b);
7 }
 1 public static void changeNum(Integer a,Integer b) {
 2     try {
 3         Field field = Integer.class.getDeclaredField("value");
 4         field.setAccessible(true);//去除private
 5         //去除final影响
 6         Field modifiersField = Field.class.getDeclaredField("modifiers");
 7         modifiersField.setAccessible(true);
 8         modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
 9         //交换
10         int temp = b;
11         field.set(b, a);
12         field.set(a, new Integer(temp));
13     } catch (Exception e) {
14         e.printStackTrace();
15     }
16 }
View Code
posted @ 2017-07-27 18:37  eRrsr  阅读(158)  评论(0)    收藏  举报