2017-08-04 9 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()はハンドルの具象クラスに強制されていません静的メソッドのように思えます。私が欲しいことをする別の方法がありますか? (すなわち、「工場」のGetHandle()メソッドを提供するためにHandleのすべての実装を強制する)。

答えて

0

クラスを強制的にJavaで静的メソッドにすることはできません。

+0

あなたはそれらを抽象化できません:https://stackoverflow.com/questions/370962/why-cant-static-methods-be-abstract-in-java –