技术标签: NPE NullPointerException
参考文章:http://www.cnblogs.com/mafly/p/trap.html
直接上代码:
public class User {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + "]";
}
}
public static void main(String[] args) {
User user = new User();
Map<Integer, Object> hashMap = new HashMap<>();
hashMap.put(user.getId(), user.getName());
Map<Integer, Object> concurrentHashMap = new ConcurrentHashMap<>();
concurrentHashMap.put(user.getId(), user.getName());//这里出现NullPointerException
}
Map类集合K/V能不能存储null值的情况,如下表格:
在遍历集合时对元素进行add/remove操作要使用Iterator,使用for循环时会报错,一定会报错吗?看代码:
情况2:
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
for(String str : list){
if("2".equals(str)){
list.remove(str);
}
}
Iterator<String> it = list.iterator();
while(it.hasNext()){
String temp = it.next();
if("2".equals(temp)){
it.remove();
}
}
System.out.println(list.toString());
}
程序不会报错,貌似foreach只有操作倒数第二个元素才没问题。但是我们依然要注意不要在foreach循环里进行元素的remove/add操作。remove元素要使用Iterator方式,如果并发操作,需要对Iterator对象加锁。
这个工具类应该都用过,可以很方便的把数组转换为集合,但是一些细节需要注意:
public static void main(String[] args) {
String[] str = new String[]{"a","b"};
List list = Arrays.asList(str);
list.add("c");//报错
// str[0] = "d";
for(Object o : list){
System.out.println(o);
}
}
当我们需要把一个集合转换成数组时,往往会调用toArray()方法,如果使用的是无参的方法,会报ClassCastException异常。
原因:直接使用toArray()无参方法返回值只能是Object[]类,若强转成其它类型数组将会抛出异常。
解决方案:使用<T> T[] toArray(T[] a);有参数这个方法,代码如下:
文章浏览阅读468次,点赞22次,收藏16次。在 Android 中,监听音频焦点变化意味着您可以获得关于音频焦点状态的通知,并针对焦点变化执行相应的操作。音频焦点是指哪个应用程序或组件有权播放音频的能力。
文章浏览阅读10w+次。Shell脚本(Shell Script )可以简单理解为多个LINUX命令的堆砌,与Windows/Dos下的批处理相似_shell脚本-gf
文章浏览阅读2.4k次。基于IPD研究(书籍、网络文章、个人实践),参考CMMI框架,输出本研发管理能力成熟度框架。_研发管理成熟度
文章浏览阅读478次。在《高性能JavaScript》一书中提到了LABjs这个用来加载JavaScript文件的类库,LABjs是Loading And Blocking JavaScript的缩写,顾名思义,加载和阻塞JavaScript,而它的API script()和wait()则优雅地实现了这两个功能,我在高性能JavaScript 加载和执行一文中也简单讲解了这两个核心API的用法。当然,LABjs还有更多..._so打包到js
文章浏览阅读1.7k次。为什么80%的码农都做不了架构师?>>> ..._rancher 1.6
文章浏览阅读5.8k次,点赞9次,收藏26次。首先确保已经安装了annaconda和pycharm软件,可百度相关教程。1.安装notebook在独立anaconda环境中,假设环境名为Jupyter,安装notebook,已安装的见下一步。(Jupyter) E:\Pywork> conda install notebook # 或 pip install notebook2.检查ipython是否安装默认安装jupyter notebook包时会安装关联的ipython包,为确保此处无问题,可以检查一下,在Jupyter_笔记本内核和代码不匹配
文章浏览阅读61次。1.maven的setting.xml中<profiles> <profile> <id>sonar</id> <activation> <activeByDefault>true</activeByDefault> </activation> <proper...
文章浏览阅读137次。系统 更新yum upgrade卸载rpm -qa|grep -i mysqlrpm -ev mysql-community-common-5.7.27-1.el7.x86_64 mysql-community-server-5.7.27-1.el7.x86_64 mysql-community-server-5.7.27-1.el7.x86_64 mysql-community-libs-5.7..._yum拉取msyql8的rpm源
文章浏览阅读1k次。Reflection in java provides ability to inspect and modify the runtime behavior of applications. Reflection is one of the advance topic of core java. Using reflection we can inspect a class,interface_reports all fields methods 哦日期classes,found in the specified
文章浏览阅读4.4k次。之前写在《米家接入HomeKit系列》系列文章的时候,我们讲解了如何使用通过HomeAssistant和HomeBridge来将米家设备接入HomeKit中。细心的同学应该发现我在讲解米家接入HomeKit系列二:通过群辉NAS的Docker搭建HomeAssistant章节最后的配置截图中有个UPS的配置。于是就有玩NAS的小伙伴问我UPS如何接入HomeAssistant。那么今天我就特意写一篇文章给大家介绍下我们怎样才能够将UPS接入到HomeAssistant中进行展示监控。_network ups tools
文章浏览阅读275次。本文讲讲怎么用 MPAndroidChart 框架实现折线图、柱形图、饼图,并且进行样式设置,达到和宣传图差不多的效果。一开始看到 MPAndroidChart 的各种图表介绍图感觉很好看,但是直接New一个相应图表,仅仅填充数据的话,样式稍微有些丑。经过一番阅览文档才把样式调整得好看些。所以就写了这篇文章作下记录。APP 里实现的最终效果:最终效果引入框架首先是引入框架:Gradle配置一下依赖...
文章浏览阅读564次。import neo4j from 'neo4j-driver' async getKnowMap(cypher, user) { // console.log(cypher); // neo4j数据展示 var config = { container_id: "viz", server_url: "bolt://192.168.51.109:7687", server_use_react neo4j