簡體   English   中英

替代java中的靜態通用接口

[英]Alternative for static generic interface in java

我想要做的是為幾個類添加一個通用接口,允許它們調用靜態加載方法來使用來自數據庫的信息實例化對象。 這應該允許它們在其他泛型類中使用,在我的例子中是“LoadAble”類的ListModel。

問題:

  1. 必須在界面內定義靜態方法
  2. 在實現類時,不能覆蓋靜態接口方法
  3. 必須在調用非靜態方法之前實例化對象
  4. 通用類型需要減速才能調用所需的方法。
  5. 抽象類不支持靜態方法。

static方法無法實現接口方法。

您正在尋找的是工廠模式 ,即具有“創建”方法的接口,以及多個實現(工廠)。

如果要將邏輯保持在一起,可以將工廠實現為靜態嵌套類:

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();

解決方案是在界面中創建的虛擬對象

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);

我希望這會幫助那些遇到同樣問題的人,也許有人可以建議一個更好的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM