繁体   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