反射是很强大的,谁说的final修饰的就不能改变,

通过反射获取成员变量,之后可以取消访问修饰符,也就是说private的也可以访问,

在修改常量(final修饰的),之后就可以对其做任何操作了

如下,通过一个方法交换两个Integer对象的值:

package ni.jun.yang.test;import java.lang.reflect.Field;
import java.lang.reflect.Modifier;public class Test {public static void main(String[] args) {Integer a = 10;Integer b = 20;System.out.println("交换前:a="+a+",b="+b);        change(a,b);        System.out.println("交换后:a="+a+",b="+b);}public static void change(Integer a, Integer b) {//        System.out.println("交换后:a="+b+",b="+a);
//        System.exit(0);try {Field field = Integer.class.getDeclaredField("value");field.setAccessible(true); //取消访问修饰符//public final class Field extends AccessibleObject implements Member//值为 true 则指示反射的对象在使用时应该取消 Java语言访问检查。//值为 false 则指示反射的对象应该实施 Java语言访问检查。            //修改常量(final)Field modifiersField = Field.class.getDeclaredField("modifiers");modifiersField.setAccessible(true);modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);//交换int temp = b;field.set(b, a);field.set(a, new Integer(temp));} catch (Exception e) {e.printStackTrace();}}}

转载于:https://www.cnblogs.com/nijunyang/p/7668179.html

交换两个局部变量Integer的值相关推荐

  1. java swap函数_Java 利用swap函数交换两个整型数据值

    提到交换两个数a, b的值,一定可以想起很多方法,a = a+b;b = a - b; a = a - b;借助temp的方法等等,但是如果食用swap方法的话,这个问题可是很有研究的了,要求使用sw ...

  2. 交换两个变量ab的值PHP,由[交换两个变量的值问题]理解程序的时空复杂度

    由一个编程经典问题,交换两个变量的值入手,理解程序的时空复杂度(以下均使用PHP代码演示问题的解决方法)解决问题的方法一:1.方法文字描述:使用一个中间变量temp,实现两个变量值的互换2.实现的具体 ...

  3. java交换两个变量的值_Java中交换两个整数变量的值

    需求 如下,我们定义了两个整数变量,并且分别进行了赋值,下面,我们需要实现的就是将x的值赋值给y,将y值赋值给x,实现x和y的值交换: int x = 100; int y = 200; 方法一:使用 ...

  4. python两数交换 函数_Python 为什么只需一条语句“a,b=b,a”,就能直接交换两个变量?...

    从接触 Python 时起,我就觉得 Python 的元组解包(unpacking)挺有意思,非常简洁好用. 最显而易见的例子就是多重赋值,即在一条语句中同时给多个变量赋值: >>> ...

  5. setnx和expire合成一条指令_Python 为什么只需一条语句“a,b=b,a”,就能直接交换两个变量?...

    从接触 Python 时起,我就觉得 Python 的元组解包(unpacking)挺有意思,非常简洁好用. 最显而易见的例子就是多重赋值,即在一条语句中同时给多个变量赋值: >>> ...

  6. Python 为什么只需一条语句“a,b=b,a”,就能直接交换两个变量?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 从接触 Python 时起,我就觉得 Python 的元组解包(u ...

  7. 交换两个变量的值,不使用第三个变量的四种法方

    交换两个变量的值,不使用第三个变量的四种法方 通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换.代码如下: int a,b; a=10; b=15; int t; t=a; a= ...

  8. 不用引入第三变量交换两个变量的值

    前几天发现了一个问题:有人告诉我,要进行变量交换,就必须引入第三变量! 假设我们要交换a和b变量的值,如果写成 int a=5,b=10; a=b; b=a; 那么结果就是两个都是10,理由不言而喻. ...

  9. 函数交换两个变量java_java 编写函数 交换两个基本变量的值

    java 编写函数 交换两个基本变量的值 Java编写一个函数交换两个变量的值 Java函数在传递过程中只能够传值,不能传址.这样,函数的参数在函数内部做任何变化就都不会反映到外部调用者来.所以解决之 ...

最新文章

  1. HTSRealistic missions 10:Holy Word High School
  2. 不学无数——SpringBoot入门Ⅱ
  3. Android toolbar menu 字体点击样式
  4. Java多线程知识小抄集(四)——完结
  5. linux网络编程之inet_addr和inet_ntoa使用总结
  6. 年度回忆录(2011.12----2012.09)
  7. 巧用 PHP 数组函数 1
  8. 数据库 之 事务控制和隔离级别
  9. 广州元宇宙10条(附pdf下载地址)
  10. 图片保存为YUV格式
  11. 【STM32Cube笔记】16-STM32Cube个性化定制
  12. Chromium浏览器扩展JS对象方法
  13. MFC简易RTF编辑器
  14. [书单]创意写作书 48本
  15. BZOJ2827 千山鸟飞绝
  16. java jtable 复选框_java swing如何在JTable一个单元格添加多个复选框
  17. position:sticky 粘性定位 (sticky) 与 固定定位
  18. 输出二叉查找树poj 2418 二叉查找树
  19. AUTOSAR基础篇之DTC
  20. 药品注册专员前景如何?5条职业规划发展方向

热门文章

  1. java swing事件_第四节 Java Swing事件处理
  2. 数据库:MySQL、HBase、ElasticSearch三者对比
  3. 开发工具:IDEA 2021.1 的 Win/Mac 快捷键大全!!
  4. 网络知识:说说我们常听说的网络攻击是怎么回事?
  5. 数据挖掘相关知识介绍
  6. 收集sqlite常见问题
  7. 今日腊八节,祝福送上!
  8. ediplus 复制编辑一列_vi编辑器的使用详解
  9. UNION JOIN 连接表
  10. Spring Boot @Conditional 注解