我有问题。因此,假设JRE中有这个类本身有100多种方法:
class HundredMethods {
public void method1(int) {
}
public void method2(int) {
}
... (98 more methods)
}
我希望改变其中5种方法的参数。 具体来说,整数加倍。 和添加一个额外的双参数
我当前的解决方案涉及一个包装类:
-A:提供直接访问原班
-B:有五种方法可以将双参数(带有一些额外的输入)“转换”为原始的整数参数。所以:
class WrapperMethods{
public HundredMethods original = (assigned at constructor)
public void method1(double,double(extra)) {
int i = (assigned a value in "code" below)
this.original.method1(i);
}
}
除了上面的方法之外,还有另一个轻量级的解决方案来改变和添加“重”类中的几个方法吗?在我的代码中实际实现这个解决方案方面,我已经发现当用户不知道包装器类改变了什么方法时,它会变得混乱。事实上,我有一个大约250多个方法类,我正在改变25个方法,所以类越大,我的代码变得越来越混乱。考虑到我想将我的代码公开发布,有人必须在每次想要使用包装器时查找包装器改变的方法。
谢谢!
答案 0 :(得分:2)
您可以创建一个子类,并为要修改的五种方法中的每一种添加两种方法。一个需要double
,执行您的逻辑并对原始方法执行super.
调用,并且采用int
并且确保它与您时相同传递double
。
所有其他95种方法仍可通过您的子类正常访问。
class WrapperMethods extends HundredMethods {
public void method1(double d) {
int i = (assigned a value in "code" below)
super.method1(i);
}
public void method1(int i) {
// Make sure that any calls that happen to pass in an integer,
// also go by your logic.
this.method1((double)i);
}
}