报错信息如下:
Exception in thread "main" java.lang.NullPointerException
at com.zhangjb.main.MainTest.main(MainTest.java:9)
测试代码如下:
package com.test.main;
public class MainTest {
public static void main(String[] args) {
int age = 0;
TBean bean = new TBean();
bean.setName("admin");
age = bean.getAge();
System.out.println("age"+ age);
}
}
class TBean {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
对着代码看了觉得不可思议,bean 对象不可能是null,怎么会报空指针,百思不得其姐!
后来就用反编译工具编译了一下,恍然大悟,第九行“age = bean.getAge();” 编译后的代码是:“age = bean.getAge().intValue();”
这就可以解释了,编译器采用了自动拆箱,而Integer类型的成员变量没有赋值,默认是null,水落石出。