易截截图软件、单文件、免安装、纯绿色、仅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读取PPT文件

import java.io.InputStream;
import org.apache.lucene.document.Document;
import org.apache.poi.hslf.HSLFSlideShow;
import org.apache.poi.hslf.model.TextRun;
import org.apache.poi.hslf.model.Slide;
import org.apache.poi.hslf.usermodel.SlideShow;
public Document getDocument(Index index, String ur ......

Java文本语音转换组件JTTS发布(eSpeak封装)

下载地址:http://greenvm.googlecode.com/files/JTTSEngine.7z
(含示例与源码,目前仅提供dll封装)
众所周知,所谓TTS即Text To Speech的英文缩写,也就是“从文本转换到语音”。
TTS技术的主要作用在于利用计算机合成人语,并将文字信息转化为语音信息进行播放。简单点说,TTS技术赋予了计算机“开口 ......

java锁机制Synchronized


原文引自http://hi.baidu.com/heyinjie/blog/item/608ee7108f1f4802203f2e35.html
打个比方:一个object就像一个大房子,大门永远打开。房子里有很多房间(也就是方法)。这些房间有上锁的(synchronized方法), 和不上锁之分(普通方法)。房门口放着一把钥匙(key),这把钥匙可以打开所有上锁的房间。另外我把所有想 ......

Effective Java 学习笔记(9)

通常,有一类问题的产生都是由于没有重载hashCode这个方法. 当你重载equals后,hashCode必须重载,否则在使用HashMap, HashSet, Hashtable的时候,会出错.
对于hashCode有几个原则.
1. 不管什么时候调用hashCode,如果同一个对象与hashCode相关的字段没有修改的话,这个方法的返回值必须相同. 但不必和另一个应用程序中的值相等 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号