我正在处理以下问题。我正在使用一个库,并希望重载该库中某个类的构造函数,以更好地满足我的需求。库类提供了这样一个构造函数:重载库类构造函数
public SomeName(int variable) {...}
,我希望能够调用
public SomeName(int variable, float myVariable) {...}
创建厂的,这似乎是一个矫枉过正,有一个简单的方法来做到这个?
我正在处理以下问题。我正在使用一个库,并希望重载该库中某个类的构造函数,以更好地满足我的需求。库类提供了这样一个构造函数:重载库类构造函数
public SomeName(int variable) {...}
,我希望能够调用
public SomeName(int variable, float myVariable) {...}
创建厂的,这似乎是一个矫枉过正,有一个简单的方法来做到这个?
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);
...
}
}
非常感谢,这正是我想知道的。 – JohnEye 2011-12-21 12:33:14
@JohnEye - 不客气。 – lsoliveira 2011-12-22 11:42:02
如果不更改库,则无法做到这一点。
子类,类,并添加新的构造函数:)
您能扩展这个库类? 还是最后一堂课? – rineez 2011-12-21 11:03:47
我能够做到这一点,我只是希望我可以滥用java来做我的出价。 – JohnEye 2011-12-21 11:19:27