我正在閱讀有效的java教科書。第一項是關於使用靜態工廠方法而不是公共構造函數。我的疑問是,如果我指定Interface
如何在Interface
中指定靜態工廠方法?因爲java不支持interface
中的靜態方法。該教科書規定了關於創建一個包含公共靜態工廠方法的不可實例化類的。但是這些方法如何訪問實現類的私有構造函數呢?接口類java中的靜態工廠方法
該教科書說,如果您要定義Interface Type
,請創建一個不可實例化的類Types
並在該類中包含靜態工廠方法。但是如何在Types
類中定義的方法訪問具體實現的私有構造函數Interface Type
編輯: - 下面的句子是從課本引用的。請給我解釋一下其含義
「接口不能有靜態方法,所以按照慣例,靜態工廠方法(第4項)一份名爲類型被放在一個noninstantiable類的接口類型」
編輯: - 從Effective Java By Joshua Bloch: Item1 - Static Factory Method
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
這會幫助你理解: http://stackoverflow.com/questions/6129026/effective-java-by-joshua-bloch-item1-static-factory-method – user1933888
它使這個概念更加清晰。但我的疑問依然存在。靜態方法createFoo()如何調用MyFoo的私有構造函數 –