先看段代码:
InfoOfDay day = new InfoOfDay(); List<String> list =day.getIncidentList(); list = new ArrayList<>() ; list.add("hu"); List<String> list1 =day.getIncidentList(); System.out.println(list1.size()); //这行会报Null指针异常
@Data public class InfoOfDay { //和当日匹配的日程信息 private List<String> incidentList ; }
上面代码运行会报错,是因为
List<String> list =day.getIncidentList(); //这个list 里面保存的是一个地址,当
day.getIncidentList()时,类中的list是null,没指向任何地址,
list = new ArrayList<>() 只是改变了外面list的值,类中的list 的值没有变
总结:java语言本质都是在传值,只不过针对引用类型传的是地址的值。