什么是更改器方法,什么是访问器方法?
更改器方法:调用方法后对象的状态会发生改变
访问器方法:调用方法后对象状态不发生变化
区别在于是否只访问对象而不改变对象状态。
访问器方法:
以LocalDate为例。
调用LocalDate的plusDays方法:
LocalDate newDate = nowDate.plusDays(500);
调用这个方法后,nowDate表示的日期还是不会变,会生成一个距离nowDate表示日期500天后的新LocalDate对象,然后把这个对象赋给newDate,原来的nowDate实际上没有发生任何改变,他表示的日期还是没有变。
同样的,String类的toUpperCase方法也会返回一个将字符大写的新字符串,而原字符串不发生变化。
这样的方法我们称之为访问器方法。
更改器方法:
以GregorianCalendar类为例,这是Java早期用来处理日期的类。以下代码表示一个日期新增1000天:
GregorianCalendar someDay = new GregorianCalendar(1999,11,31);
//注意,这个日期中的月份是从0表示到11的
somDay.add(Calendar.DAY_OF_MONTH,1000);
再次单独访问someDay查看日期的年月日:
year = someDay.get(Calendar.YEAR);//2002
month = someDay.get(Calendar.MONTH) + 1;//09
day = someDay.get(Calendar.DAY_OF_MONTH);//26
可以发现,someDay自身的状态发生了改变,表示的日期变大了1000天。
这样子的访问后会改变对象状态的方法称之为更改器方法。