让我描述一下情况,我确定我只是错误地考虑了这个问题。我有一个将实现接口(interface)的具体类。我想在契约(Contract)中强制执行该类必须具有特定类型的构造函数。例如:
interface MyInterface {}
public class MyClass implements MyInterface {
public MyClass(HashMap<String, String> params) {
}
}
我想确保 MyClass 是用单个 HashMap 参数实例化的,这看起来应该是这样的:
interface MyInterface<T>
除了在方法签名上使用泛型外,我从未将它们用于类或接口(interface),我真的是这方面的初学者,所以请解释解决方案中涉及的任何泛型……或者替代解决方案,如果我我错误地考虑了这一点(从架构上讲)。谢谢!
最佳答案
您不能在 Java 中使用接口(interface)对构造函数强制执行契约。您可以获得的最佳近似是通过为工厂定义一个接口(interface),使用一个采用单个 HashMap
...
create()
方法
你也可以用一个构造函数需要一个HashMap
的抽象类来替换接口(interface),这将强制子类给一个,但不能更多(子类不一定有一个HashMap参数)。
关于java - 如何通过具体类实现的接口(interface)在具体类中强制执行类型构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1571905/