我正在阅读 Joshua Bloch 的 Effective Java
,有关第一条 Static Factory Method
的问题。
引用[Bloch, p.7]
接口不能有静态方法, 因此按照惯例,接口的 静态工厂方法被放在一个无法实例化的类中, 这个类被命名为 Types。例如, Java 集合框架提供了不可修改的集合、同步的集合等。 几乎所有这些实现都通过一个非实例化类 (java.util.Collections)的静态工厂方法进行导出。 返回对象的类都是非公共的。
好的。当查看源代码时,我看到了 java.util.Collection
接口和带私有构造函数(即无法实例化的类)的 java.util.Collections
类。我发现无法实例化的类 Collections 具有所有静态方法,就像 Bloch 所说的那样。但是我没有看出两个类之间的联系,就像 Bloch 所说的那样:
接口不能有静态方法,因此按照惯例,接口的静态工厂方法被放在一个无法实例化的类中,这个类被命名为 Types。
有人可以给我指出其中的显而易见之处吗?
他说返回对象的类都是非公共的是什么意思?
这里是获取 Java 源代码的地方:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/Collection.java?av=f