【使用注意】Boolean是final类型,值初始化后不能被更改
由于服务代码逻辑需要在map中的value存储Boolean,后面的代码逻辑 中我想更改Boolean的值发现更改不了,后来查找资料才发现原来Boolean实现类是定义为final,还是对原理不了解呀,以后多注重原理。
测试代码(final类):
HashMap<String,Boolean> map = new HashMap<String, Boolean>();map.put("1", false);map.put("2", true);map.put("3", false);Collection<Boolean> values = map.values();for (Boolean v : values) {v = Boolean.valueOf(true);}Collection<Boolean> vs = map.values();System.out.println(vs);
结果:[false, true, false]
发现值依旧没有发生改变
测试代码(自定义类):
HashMap<Integer,News> map = new HashMap<Integer, News>();map.put(1, new News(1, "weijie"));map.put(2, new News(2, "hexiang"));Collection<News> values = map.values();for (News news : values) {news.id = 5;}Collection<News> values2 = map.values();for (News news : values2) {System.out.println(news);}
结果: News [id=5, name=weijie]
News [id=5, name=hexiang]
自定义的类不是final类型因此对象内容通过引用后的变量可以对地址空间的内容进行修改。
参考博客:Boolean 源码
【使用注意】Boolean是final类型,值初始化后不能被更改相关推荐
- C++中的值初始化和默认初始化
1.值初始化 顾名思义,就是用数值初始化变量.如果没有给定一个初始值,就会根据变量或类对象的类型提供一个初始值.对于int类型其值初始化后的值为0. 2.默认初始化:如果定义变量时没有指定初值,则变量 ...
- 无法用 CString 类型的值初始化 CWnd 类型的引用(非常量限定)
创建MFC程序时,,显示m_strPathName,无法用 "CString" 类型的值初始化 "CWnd &" 类型的引用(非常量限定),解决方法,对 ...
- 无法用“Point*”类型的值初始化“Point ”类型的引用(非常量限定)
Point为一个结构体,出现如下警告: 无法用"Point*"类型的值初始化"Point &"类型的引用(非常量限定)联机搜索 struct Point ...
- java反射设置属性值_Java反射如何有效的修改final属性值详解
前言 以前写过一篇 Java 反射修改 final 属性值,本文将在这里重新温习一下Java反射如何有效的修改final属性值,下面话不多说了,来一起看看详细的介绍: 假设有个类 class Pers ...
- fianl属性 java_Java反射如何有效的修改final属性值详解
前言 以前写过一篇 Java 反射修改 final 属性值,本文将在这里重新温习一下Java反射如何有效的修改final属性值,下面话不多说了,来一起看看详细的介绍: 假设有个类 class Pers ...
- C++11新特性之新类型与初始化
C++11新特性之新类型与初始化 snoone | 2016-06-23 11:57 浏览量(148) 评论(0) 推荐(0) 数据 这是C++11新特性介绍的第一部分,比较简单易懂, ...
- [你必须知道的.NET]第九回:品味类型---值类型与引用类型(中)-规则无边
发布日期:2007.5.28 作者:Anytao ©2007 Anytao.com ,原创作品,转贴请注明作者和出处. 接上回[第八回:品味类型---值类型与引用类型(上)-内存有理]的探讨,继续我们 ...
- 第八回:品味类型---值类型与引用类型(上)-内存有理
第八回:品味类型---值类型与引用类型(上)-内存有理 http://www.cnblogs.com/anytao/archive/2007/05/23/must_net_08.html 发布日期:2 ...
- php赋值boolean,php布尔类型(Boolean)
这是最简单的类型.boolean 表达了真值,可以为 TRUE 或 FALSE. 语法 要指定一个布尔值,使用关键字 TRUE 或 FALSE.两个都不区分大小写.<?php $foo = Tr ...
最新文章
- AI设计的新启发 | 什么是用户体验中台?
- D/A与A/D转换器
- Android Studio的Gradle常用命令配置和依赖管理
- 【云计算的1024种玩法】云端打造家庭文件备份中心
- 语句练习题 折纸、阶乘、阶乘求和、范围内条件查找(水仙花数)。
- merkle tree(hash tree)
- coreldraw+排灯_CorelDRAW打造七彩灯泡
- Android adb shell刷机命令实战
- LM2596数控电路原理分析
- 单月营业额一个亿,任泉李冰冰黄晓明追着投钱!这家企业是谁?
- Excel只保留2位小数,删掉其他小数位
- 2022年百华鞋业祝您新年快乐,虎年大吉
- 机器学习api_开发人员会喜欢的10种机器学习API
- c++软件开发面试旋极面试题_北京旋极信息技术股份有限公司2015招聘
- 王爽老师汇编语言第四版第十章CALL和RET指令——小白笔记
- 东方国信 Java一面
- java windows 打印机_使用Java中的客户端计算机打印机(不是部署应用程序的服务器)进行打印...
- https协议能否让网站,优先被百度收录,个人观点
- 全球无缝隙天气预报产品体系
- 交换机MAC地址表管理
热门文章
- 非对称加解密交互故事
- php 去年年初和年底时间,PHP 日期与时间
- eclipse maven打包_Maven 学习
- 编写五子棋的完整python代码_python实现五子棋游戏
- JAVA入门级教学之(char类型)
- 机器人踩滑板_不死神草、飞行滑板…超2000种创新发明在这里展出
- c语言printf函数很长时间,C语言学习之printf()函数特别注意事项
- mysql修改主从复制id_mysql主从复制设置
- 2019年GitHub上最热门的Java开源项目
- 同样是Java程序员,如何比别人更优秀?