根据代码是什么,您可以执行以下操作:
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 方法(并在需要时设置)。我不喜欢这种方式,因为它公开了 get/set 方法,这可能意味着您正在提供您不想使用的东西。另一种方法是通过反射来做一些事情,但我更喜欢这样:-)