2017-08-04 118 views
0

我希望每個實現接口的類都具有靜態工廠方法,如接口所定義。即:靜態接口工廠方法[Java 8]

public interface Handle { 
    public static Handle GetHandle() { 
     return null; 
    } 
    public void DoThings(); 
} 

public class HandleA implements Handle { 
    private HandleA(); 
    public static HandleA GetHandle() { 
     return new HandleA(); 
    } 
    public void DoThings() { 
     return; 
    } 
} 

// This is allowed even though HandleB doesn't provide a GetHandle() 
public class HandleB implements Handle { 
    private HandleB(); 
    public void DoThings() { 
     return; 
    } 
} 

閱讀過去的問題,這似乎是靜態方法GetHandle()不是混凝土類處理的執行,因爲這不是靜態的接口方法的設計意圖的行爲是什麼。有另一種方法可以做我想做的事嗎? (即強制執行Handle的所有實現以提供「工廠」GetHandle()方法)。

回答

0

你不能強制一個類在Java中有靜態方法。

+0

而且你不能抽象它們:https://stackoverflow.com/questions/370962/why-cant-static-methods-be-abstract-in-java –