2017-08-04 99 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 –