公有类不应该直接暴露数据域。
反例:java.awt.Point
正确做法:如果类可以在它所在的包的外部进行访问,就提供访问方法。
总结:公有类永远都不应该暴露可变的域。虽然还是有问题,但是让公有类暴露不可变的域其危害比较小。但是,有时候会需要用包级私有的或者私有的嵌套类来暴露域,无论这个域是可变还是不可变的。
公有类不应该直接暴露数据域。
反例:java.awt.Point
正确做法:如果类可以在它所在的包的外部进行访问,就提供访问方法。
总结:公有类永远都不应该暴露可变的域。虽然还是有问题,但是让公有类暴露不可变的域其危害比较小。但是,有时候会需要用包级私有的或者私有的嵌套类来暴露域,无论这个域是可变还是不可变的。