Java反射交换两个整型变量的值
  在一次面试中,做了这么一道题"交换两个整型变量的值",当时看到这个题目之后,会心一笑,这也太简单了--直接使用中间变量交换不就可以了吗?但是,面试官却说不需要返回值,<br />在调用的地方,再次输出变量的值,我就不知道了,于是,他提示我用反射。思考了良久,就写了下面的代码。<br />package com.yzh.study.fanshe;<br /><br />import java.lang.reflect.Field;<br /><br />/**<br /> * author:yangzhou<br /> * time: 2018/5/9 15:55<br /> * description: 通过反射交换两个变量的值<br /> **/<br />public class Swap {<br />    public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {<br />        Integer a = 2;<br />        Integer b=4;<br />        System.out.println("a="+a+","+"b="+b);//a=2,b=4<br />        swap(a,b);<br />        System.out.println("a="+a+","+"b="+b);//a=4,b=2<br />    }<br /><br />    /**<br />     * 开始交换,只能使用integer类型<br />     * @param a<br />     * @param b<br />     * @throws NoSuchFieldException<br />     * @throws IllegalAccessException<br />     */<br />    private static  void swap(Integer a,Integer b) throws NoSuchFieldException, IllegalAccessException {<br />        int temp = a;//暂存a的值,否者后面讲造成a,b的值相同<br />        Class<Integer> integerClass = Integer.class;<br />        Field value = integerClass.getDeclaredField("value");<br />        value.setAccessible(true);<br />        value.setInt(a,b);<br />        value.setInt(b,temp);//经过测试,不能使用value.set(b,temp),否者,b的值也将变成和a一样<br /><br />    }<br />} 相关推荐
  jeonkc    2020-04-26  
   cmsmdn    2020-04-26  
   明天你好    2019-06-30  
   dingguagua    2012-09-18  
   周游列国之仕子    2019-04-07  
   evanbai    2011-11-20  
   NSSpeak信息安全    2017-12-22  
   python的学习之路    2018-06-18  
   凯哥的技术    2016-04-17  
   wujimiao    2013-12-08  
   xiarilove    2014-02-21  
   pythonjw    2019-04-14  
   liuwanfei    2007-11-18