如何确保参数实现接口

时间:2016-03-31 10:16:10

标签: java interface

我正在开发一个项目,其中有一个继承自抽象类Generator的类列表。它的工作方式类似于责任链,其中每个类在另一个类之后实例化,调用generate()方法。唯一特别的事情是每个Generator被传递给下一个,以便下一个能够调用前一个方法的某些方法,以确保它继续其工作采用相同的假设。

通过这种设置,我想允许链上的每个类确定前一个必须实现的接口,以便它知道它可用的方法。

如果类没有实现这样的接口,只会显示一个错误(它是一个命令行工具)。

我一直在研究几种可能性,但我真的不知道如何正确实现这一点。你能想到在编译时这样做的方法吗?我是否需要执行instanceof等运行时检查?

我在这里留下一些骨架代表我现在所拥有的东西,万一它有所帮助。

public abstract class Generator {
    protected Generator(Object somePrivateStuff) {/* ... */}
    public abstract void generate();
}

public class SpecialGenerator extends Generator {
    protected SpecialGenerator(Object o) { super(o); }
    public void generate() {
        // Some actual implementation
    }
}

public class Main {
    public static void main(String[] args) {
        // Dynamically load all the classes extending Generator
        // via the Reflections library, and call the method generate()
        // on each one
    }
}

任何想法都将受到赞赏。提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果动态加载类,e。 G。通过angular2-polyfills.js名称,String是无用的,因为您在编译时不了解它们。相反,您应该使用Class#isAssignableFrom()

instanceof

在不知道应该如何执行实例化的情况下,很难建议更详细的代码。