3

我想要一个具有抽象方法的抽象类,比如说abstract void compare()。但是它需要的参数应该根据不同子类中的不同实现而有所不同。我想知道这样做的正确方法是什么?

我不能通过在抽象类本身中编写它的不同签名来重载它,因为如果我这样做,它的任何子类都需要实现所有版本,这不是我想要的。谢谢。

4

2 回答 2

6

假设每个版本都compare()将具有相同数量的参数(它们应该),您可以使用泛型,以便子类可以定义参数的类型。

abstract <I, J> void compare(I arg1, J arg2);
于 2015-03-09T22:39:36.063 回答
1

你应该使用泛型来做到这一点:

public abstract class AbstractClass<T>{
public abstract void compare(T element);
}

在实现中你写这个:

Public class MyImpl extends AbstractClass<SpecificType>{
public void compare(SpecificType elemental{
// do stuff
}
}
于 2015-03-09T22:44:50.977 回答