Effective Java 第14条:在公有类中使用访问方法而非公有域
2013-08-01 18:01
288 查看
转载: http://yanfeichening.iteye.com/blog/1497657
如果类可以在它所在包的外部进行访问,就提供访问方法。
如果类是包私有的,或者私有的嵌套类,直接暴露它的数据域并没有本质的错误。
总之,公有类永远都不应该暴露可变的域。虽然还是有几个问题,但是让公有类暴露不可变的域,危害比较小。但是,有时候需要会用到包级私有的或者私有的嵌套类来暴露域,无论这个类是可变还是不可变。
Java代码
// Public class with exposed immutable fields - questionable
public final class Time {
private static final int HOURS_PER_DAY = 24;
private static final int MINUTES_PER_HOUR = 60;
public final int hour;
public final int minute;
public Time(int hour, int minute) {
if (hour < 0 || hour >= HOURS_PER_DAY)
throw new IllegalArgumentException("Hour: " + hour);
if (minute < 0 || minute >= MINUTES_PER_HOUR)
throw new IllegalArgumentException("Min: " + minute);
this.hour = hour;
this.minute = minute;
}
// Remainder omitted
}
如果类可以在它所在包的外部进行访问,就提供访问方法。
如果类是包私有的,或者私有的嵌套类,直接暴露它的数据域并没有本质的错误。
总之,公有类永远都不应该暴露可变的域。虽然还是有几个问题,但是让公有类暴露不可变的域,危害比较小。但是,有时候需要会用到包级私有的或者私有的嵌套类来暴露域,无论这个类是可变还是不可变。
Java代码
// Public class with exposed immutable fields - questionable
public final class Time {
private static final int HOURS_PER_DAY = 24;
private static final int MINUTES_PER_HOUR = 60;
public final int hour;
public final int minute;
public Time(int hour, int minute) {
if (hour < 0 || hour >= HOURS_PER_DAY)
throw new IllegalArgumentException("Hour: " + hour);
if (minute < 0 || minute >= MINUTES_PER_HOUR)
throw new IllegalArgumentException("Min: " + minute);
this.hour = hour;
this.minute = minute;
}
// Remainder omitted
}
相关文章推荐
- 《Effective java》读书记录-第14条-在公有类中使用访问方法而非公有域
- Effective Java(使类和成员的可访问性最小化、在公有类中使用访问方法而非公有域)
- Effective Java(使类和成员的可访问性最小化、在公有类中使用访问方法而非公有域)
- 学习effective java-14类和接口之在公有类中使用可访问的方法,而不是使用公有域
- 第14条:在公有类中使用访问方法而非公有域
- Effective Java(使类和成员的可访问性最小化、在公有类中使用访问方法而非公有域)
- Effective Java(使类和成员的可访问性最小化、在公有类中使用访问方法而非公有域)
- Effective Java(使类和成员的可访问性最小化、在公有类中使用访问方法而非公有域)
- 第14条:在公有类中使用访问方法而非公有域
- Effective Java(使类和成员的可访问性最小化、在公有类中使用访问方法而非公有域)
- 一分钟简单了解Effective java - 第14条 在共有类中使用访问方法而非公有域
- Effective Java(使类和成员的可访问性最小化、在公有类中使用访问方法而非公有域)
- Effective Java(使类和成员的可访问性最小化、在公有类中使用访问方法而非公有域)
- Effective Java(使类和成员的可访问性最小化、在公有类中使用访问方法而非公有域)
- 第14条:在公有类中使用访问方法而非直接使用公有域
- Effective Java(使类和成员的可访问性最小化、在公有类中使用访问方法而非公有域)
- effective java(14) 之在公有类中使用访问方法而非公有域
- Effective Java(使类和成员的可访问性最小化、在公有类中使用访问方法而非公有域)
- 第14条:在公有类中使用访问 方法而非公有域
- Effective Java(使类和成员的可访问性最小化、在公有类中使用访问方法而非公有域)