易截截图软件、单文件、免安装、纯绿色、仅160KB

Effective Java 学习笔记(13)

影响模块设计好与坏的一个重要因素就是这个模块是否隐藏它的内部数据和其他一些实现细节。
信息隐藏的好处:方便独立开发,测试,优化,使用,理解和修改。能够提高系统开发速(因为各模块可以并行开发),也能易于维护和调试,也能减少系统构建的风险。
要设计良好的模块,规则很简单,就一句话:使每个类或接口尽量不可访问。
1.对于top-level的类和接口(与文件名相同的类或接口),只有两种访问权限:包可访问,公共访问。如果这个类可以设为包可访问,那它就应该是包可访问,这样在将来就可以修改,替换或删除这些类而不影响系统的向上兼容性。
2. 如果一个包可访问的类或接口只是被一个类使用,那么可以考虑把这个类作为nested类。
有时为了测试方面,有可能会提高类或接口的可访问,这种方法可行,但要注意最高只能提到包可访问性,而不能因为测试就把相关类暴露到API中。
字段永远不能为公共的,如果一个字段是non-final,或是其指向的对象是可改变的,将其设计为公共访问,就失去了对其值进行限制的能力。同样,也不能在其值被修改的时候做一些操作。因此,这些也不是线程安全的。
以上原则同样对静态函数适用,但对常量字段例外。
要注意一点,如果一个公共的final字段指向的是可改变的对象,那么就会有潜在的安全漏洞。
如下:
 public static final Thing[] VALUES= {...};
有两种解决方式:
一种是使用unmodifiableList,
private static final Thing[] PRIVATE_VALUES = { ... };
public static final List<Thing> VALUES =
Collections.unmodifiableList(Arrays.asList(PRIVATE_VALUES));
另一中是用clone
private static final Thing[] PRIVATE_VALUES = { ... };
public static final Thing[] values() {
return PRIVATE_VALUES.clone();
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mutsinghua/archive/2010/02/05/5290877.aspx


相关文档:

关于Java的静态初始化块

      面试时候经常会碰到的一个问题,给你两个继承关系的java类的代码,这两个类中有构造方法和一些变量,然后还有一些方法,方法里通常有将变量输出的语句。这类问题主要考察我们对父类子类初始化顺序的了解情况。
      这里我们主要讨论下静态初始化块这种情况。
......

论JAVA的web开发

   大家好! 我叫小郝 也是刚开始学用JAVA开发WEB项目,希望大家给我建议下,有什么方法可以学好,用JAVA开发WEB项目!~  现在我还应该学点什么 希望大家多指点指点~   我现在SSH  学完了!     大家能有什么好点的建议吗?  有的话联系下我谢谢了~  ......

Java NIO 学习笔记 ByteBuffer (早期笔记)

(参考 “ibm nio入门”)
在 NIO 库中,所有数据都是用缓冲区处理的。在读取数据时,它是直接读到缓冲区中的。在写入数据时,它是写入到缓冲区中的。任何时候访问 NIO 中的数据,都是将它放到缓冲区中。缓冲区实质上是一个数组。通常它是一个字节数组,但是也可以使用其他种类的数组。但是一个缓冲区不仅仅是一 ......

Effective Java 学习笔记 (11)

Clone这个方法很鸡肋,原因是因为它是受保护的(protected),其二Clone这个方法是可选的,即有可能类没有提供这个方法。
clone没有调用构造函数,而且如果父类没有实现clone的话,子类永远也不可能正确实现clone.
总之,clone是个很头痛的函数,如果要正确实现,必须考虑到深考贝的情况,否则被克隆出来的对象就不是独立的 ......

Effective Java 学习笔记 (12)

与其它类不同,compareTo方法并不是Ojbect中的方法,它是Comparable接口中唯一的方法。通过实现Comparable接口,可以它能够自然排序。
排序,Arrays.sort(a); 就OK了。
书上提了一个巧妙的方法,用来消除重复的字符串。它用了一个Set集合来过滤重复的字段。
public class WordList {
     &n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号