我正在阅读《Effective java》这本书,其中第一项是关于使用静态工厂方法而不是公共构造函数的。我的疑问是,如果我在指定一个接口时,如何在接口中指定静态工厂方法?因为Java不支持在接口中定义静态方法。该书提到创建一个非可实例化类包含公共静态工厂方法。但是这些方法如何访问实现类的私有构造函数呢?
该书指出,如果您要定义一个接口类型
,请创建一个非可实例化类Types
,并将静态工厂方法包含在该类中。但是,在Types
类中定义的方法如何访问接口类型
的具体实现的私有构造函数呢?
编辑:- 下面的句子摘自该书,请解释其含义
"接口不能有静态方法,因此按惯例,接口Type的静态工厂方法被放置在一个非可实例化类(项目4)中,命名为Types"
编辑:- 取自Joshua Bloch的Effective Java:项目1-静态工厂方法
public interface Foo{ //interface without plural 's' (question 1)
public void bar();
}
public abstract class Foos(){ // abstract factory with plural 's' (question 1)
public static Foo createFoo(){
return new MyFoo();
}
private class MyFoo implements Foo{ // a non visible implementation (question 2)
public void bar(){}
}
}
我的问题是,静态方法createFoo()
如何调用私有构造函数MyFoo