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 }

浙公网安备 33010602011771号