class A extends ApiClass
{
public void duplicateMethod()
{
}
}
class B extends AnotherApiClass
{
public void duplicateMethod()
{
}
}
我有两个扩展不同 api 类的类。这两个类有一些重复 方法(在两个类中重复相同的方法)以及如何删除这种重复?
编辑
ApiClass 和AnotherApiClass 都不在我的控制范围内
最佳答案
根据代码的不同,您可以执行以下操作:
public class Util
{
public static void duplicateMethod()
{
// code goes here
}
}
然后让另外两个 duplicateMethods 调用那个。因此代码不会重复,但方法名称和对 Util.duplicateMethod 的调用会重复。
如果 Util.duplicateMethod 中的代码需要访问 A 和 B 类的实例/类变量,它不会很好地工作,但它有可能完成(如果您需要,请告诉我)。
编辑(基于评论):
使用实例变量,它变得不那么漂亮……但可以做到。像这样的东西:
interface X
{
int getVar();
void setVar(A a);
}
class A
extends ApiClass
implements X
{
}
class B
extends AnotherApiClass
implements X
{
}
class Util
{
public static void duplicateMethod(X x)
{
int val = x.getVal();
x.setVal(val + 1);
}
}
因此,对于您需要访问的每个变量,您将创建一个获取方法(并在需要时进行设置)。我不喜欢这种方式,因为它使 get/set 方法公开,这可能意味着您正在提供您不想使用的东西。另一种方法是通过反射(reflection)来做一些事情,但我更不喜欢这样:-)
关于java - 删除java中的重复代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2437692/