关注
这个交换还挺难啊,要是在Integer缓存范围内,直接修改反射修改,会把缓存池中的Integer值都改了,要new Integer对象来改。参考代码: public static void swap(Integer a,Integer b) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{
Field declaredField = Integer.class.getDeclaredField("value");
declaredField.setAccessible(true);
/**
* 错误写法
* int bVal=b.intValue();
* System.out.println("bVal:"+bTemp); // 2
* System.out.println("bVal->Integer->int:"+Integer.valueOf(bTemp).intValue()); // 1
* declaredField.set(a, bTemp); // bTemp装箱,取到缓存池中值为1的Integer(2)对象。a:1
*/
Integer bTemp=new Integer(b.intValue());
declaredField.set(b, a.intValue());
System.out.println("bVal:"+bTemp);
System.out.println("bVal->Integer->int:"+Integer.valueOf(bTemp).intValue());
declaredField.set(a, bTemp);
}
查看原帖
1 1
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 在大厂上班是一种什么样的体验 #
6459次浏览 85人参与
# 机械人避雷的岗位/公司 #
41754次浏览 275人参与
# 程序员找工作至少要刷多少题? #
12086次浏览 189人参与
# 12306一秒售罄,你抢到回家的票了吗? #
1057次浏览 36人参与
# 我现在比当时_,你想录用我吗 #
5254次浏览 80人参与
# 过年最难忘的一件事 #
23043次浏览 174人参与
# 为了减少AI幻觉,你注入过哪些设定? #
2483次浏览 90人参与
# 牛客AI体验站 #
4489次浏览 132人参与
# AI Coding的使用心得 #
3350次浏览 89人参与
# 找工作的破防时刻 #
252950次浏览 1960人参与
# 刚入职的你踩过哪些坑 #
5169次浏览 108人参与
# 一张图晒一下你的AI员工 #
3542次浏览 81人参与
# 你最满意的offer薪资是哪家公司? #
69448次浏览 349人参与
# 论秋招对个人心气的改变 #
6952次浏览 120人参与
# 关于春招/暑期实习,你想知道哪些信息? #
5174次浏览 95人参与
# 黄金这个事上,你学到了什么 #
1195次浏览 36人参与
# 机械人你知道哪些单休企业 #
85340次浏览 428人参与
# 程序员能干到多少岁? #
6581次浏览 99人参与
# 晒晒你司的新年福利 #
5184次浏览 80人参与
# 关于提前批我想问 #
267329次浏览 2303人参与
