Effective Java 第14条:在公有类中使用访问方法而非公有域

来源:互联网 发布:数车车外螺纹m20x2编程 编辑:程序博客网 时间:2024/05/18 10:25

转载: http://yanfeichening.iteye.com/blog/1497657


如果类可以在它所在包的外部进行访问,就提供访问方法。

如果类是包私有的,或者私有的嵌套类,直接暴露它的数据域并没有本质的错误。

总之,公有类永远都不应该暴露可变的域。虽然还是有几个问题,但是让公有类暴露不可变的域,危害比较小。但是,有时候需要会用到包级私有的或者私有的嵌套类来暴露域,无论这个类是可变还是不可变。

Java代码 
  1. // Public class with exposed immutable fields - questionable  
  2. public final class Time {  
  3.     private static final int HOURS_PER_DAY    = 24;  
  4.     private static final int MINUTES_PER_HOUR = 60;  
  5.   
  6.     public final int hour;  
  7.     public final int minute;  
  8.   
  9.     public Time(int hour, int minute) {  
  10.         if (hour < 0 || hour >= HOURS_PER_DAY)  
  11.            throw new IllegalArgumentException("Hour: " + hour);  
  12.         if (minute < 0 || minute >= MINUTES_PER_HOUR)  
  13.            throw new IllegalArgumentException("Min: " + minute);  
  14.         this.hour = hour;  
  15.         this.minute = minute;  
  16.     }  
  17.    // Remainder omitted  
  18. }  

原创粉丝点击