替代java中的静态通用接口

时间:2016-02-21 14:32:05

标签: java generics interface static

我想要做的是为几个类添加一个通用接口,允许它们调用 static 加载方法来使用来自数据库的信息实例化对象。这应该允许它们在其他泛型类中使用,在我的例子中是“LoadAble”类的ListModel。

问题:

  1. 必须在界面
  2. 中定义静态方法
  3. 实现类
  4. 时无法覆盖静态接口方法
  5. 必须在调用非静态方法之前实例化对象
  6. 通用类型需要减速才能调用所需的方法。
  7. 抽象类不支持静态方法。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

解决方案是在界面

中创建的虚拟对象
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);

我希望这能帮助那些遇到同样问题的人,也许有人可以提出更好的方法。