我正在处理以下问题。我正在使用一个库,并希望重载该库中的类的构造函数以更好地满足我的需求。库类提供了这样的构造函数:
public SomeName(int variable) {...}
我希望能够致电
public SomeName(int variable, float myVariable) {...}
为此创建工厂似乎是一种矫枉过正,有一种简单的方法可以做到这一点吗?
答案 0 :(得分:3)
如果不改变图书馆,就不能这样做。
答案 1 :(得分:3)
该类的子类并添加新的构造函数:)
答案 2 :(得分:3)
Java语言不提供任何高级构造,允许您在不改变类代码本身的情况下更改超类的构造函数。
那就是说,有其他选择。主要是,您可以使用cglib将字节码“注入”到库中并创建自己的构造函数(通过几种高级技术)。
对于大多数编码任务而言,这绝对是不推荐,并且是您问题的最佳解决方案(假设您没有做一些非常重要的事情),只是对该类进行子类化:
class SomeName {
public SomeName(int variable) {
...
}
}
class OtherName extends SomeName {
public OtherName(float otherVariable) {
this(*DEFAULT*, otherVariable);
}
public OtherName(int variable, float otherVariable) {
super(variable);
...
}
}
答案 3 :(得分:1)
extend
该类并创建一个新的构造函数,因为如果不改变lib就不能这样做。