2016-02-21 47 views
2

我想要做的就是爲幾個類添加一個通用接口,允許他們調用一個靜態的 load方法來實例化來自數據庫信息的對象。這應該允許它們在其他泛型類中使用,在我的情況下是用於「LoadAble」類的ListModel。java中的靜態通用接口的替代方案

問題:

  1. 一個人來定義界面中的靜態方法
  2. 一個不能覆蓋實現類
  3. 一個具有調用非靜態方法
  4. 之前實例化對象的靜態接口中的方法
  5. 通用類型需要減速才能調用所需的方法。
  6. 抽象類不支持靜態方法。

回答

1

static方法不能實現接口方法。

你要找的是Factory Pattern,即帶有「創建」方法的接口和多個實現(工廠)。

,如果你想保持這種邏輯一起可以實現工廠作爲靜態嵌套類,:

public interface Factory { 
    public Object create(); 
} 
public class MyClass { 
    public static class MyFactory implements Factory { 
     @Override 
     public Object create() { 
      return new MyClass(); 
     } 
    } 
    private MyClass() { 
    } 
} 

現在你可以使用它:

Factory factory = new MyClass.MyFactory(); 
Object obj = factory.create(); 
0

的解決方法是在界面

public interface LoadAble<T> { 
    public static <T extends LoadAble<T>> LinkedList<T> loadThis(Class<T> c) { 
    try { 
     T t = c.newInstance(); 
     return t.loadAll(); 
    } catch (InstantiationException | IllegalAccessException e) { 
     e.printStackTrace(); 
    } 
    return null; 
    } 

    public LinkedList<T> loadAll(); 
} 

創建一個虛擬對象這現在可以用

LoadAble.loadThis(LoadAbleClass.class); 

我希望這將有助於誰的人有同樣的問題,我有叫,也許有人可以提出更好的方法。