我试图找到一种方法来强制用户实现一个接口或扩展一个类来创建多个构造函数。我认为这样做的一种方法是在抽象类中创建一个抽象构造函数,但我发现我不能这样做。
我怎样才能解决这个问题?有什么方法可以强迫用户创建特定的构造函数吗?
谢谢!
发布于 2015-01-06 14:04:01
不是的。但是,由于构造函数通常被分解方法所替代,所以您可以实现抽象分解方法,或者仅仅实现其他模式,比如构建模式。
发布于 2015-01-06 14:08:00
您不能创建一个abstract构造函数,但是这里有一个解决办法,您可以这样做:
使用您希望用户实现的所有构造函数实现一个abstract类。在每个语句中,都有一个语句引用来自该类的abstract方法,实现将在子类中。通过这种方式,您将强制用户通过抽象方法实现为构造函数提供一个主体。例如:
public abstract class MyAbstractClass {
public MyAbstractClass(int param) {
method1(param);
}
public MyAbstractClass(int param, int anotherParam) {
method2(param, anotherParam);
}
protected abstract void method1(int param);
protected abstract void method2(int param, int anotherParam);
}在实现中,您将被迫提供这两个方法的实现,这两个方法可以表示两个构造函数的主体:
public class MyClass extends MyAbstractClass {
public MyClass(int param) {
super(param);
}
public MyClass(int param, int anotherParam) {
super(param, anotherParam);
}
public void method1(int param) {
//do something with the parameter
}
public void method2(int param, int anotherParam) {
//do something with the parameters
}
}发布于 2015-01-06 14:02:29
不没有。
但是,您可以构建一个单元测试框架,该框架利用反射来确保存在正确的构造函数。
https://stackoverflow.com/questions/27800229
复制相似问题