В зависимости от того, какой код вы могли бы сделать что-то вроде:
public class Util
{
public static void duplicateMethod()
{
// code goes here
}
}
, а затем просто другой два метода duplicateMethods называют это. Таким образом, код не будет дублироваться, но имя метода и вызов метода Util.duplicateMethod будут.
Если код в Util.duplicateMethod необходим для доступа к переменным класса или класса класса A и B, это не получится так хорошо, но это потенциально возможно (сообщите мне, если вам это нужно).
EDIT (на основе комментариев):
С переменными экземпляра становится менее довольно ... но может быть сделано. Что-то вроде:
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 общедоступными, что может означать, что вы делаете доступными вещи, которые вы не хотите быть доступными. Альтернативой было бы сделать что-то с отражением, но я бы хотел этого еще меньше :-)
Если AnotherApiClass находится под вашим контролем, можете ли вы унаследовать его от ApiClass? – BeWarned
Являются ли переменными-членами, от которых зависят ваши методы, в классах API или в ваших собственных классах или в обоих? –
@Carl Manaster переменные в моем классе. –