Java,在不知道参数的情况下强制实现方法

时间:2016-10-25 19:29:05

标签: java override

我有一个执行基本操作的抽象类,现在我想强制每个派生类都有一个方法" check",但重点是我对这个方法一无所知。例如,抽象类:

public abstract class Service<T extends Transport> {

  public T getTransport(int id) { 
    [...] 
  }

  public abstract boolean checkTransport(T transport, ...);

}

和两个实施类:

public ServiceAAA extends Service<ClassA> {

  public boolean checkTransport(ClassA t) {
    [...]
  }

}

public ServiceBBB extends Service<ClassB> {

  public boolean checkTransport(ClassB t, Integer value, Integer otherValue) {
    [...]
  }

}

ServiceBBB需要两个参数来检查ClassB类的对象t。 当然它没有用,有没有办法强制子类实现checkTransport方法而不使用&#34;对象......&#34;符号

1 个答案:

答案 0 :(得分:1)

不,没有。

让我们假装 一种方式。您将如何从抽象Service类或从引用此对象的任何调用站点Service<...>调用此方法?没有办法知道特定子类的方法需要什么,因此无法调用该方法。

解决这个问题的一种方法是将检查器作为一个类传递给Service;也就是说,使用组合而不是继承。如果你这样做,你可以让检查器的接口完全没有额外的参数(例如,Predicate可能有效),并且实现该检查器的特定子类可以在构造时传递参数时间。