首页 > 解决方案 > 有没有办法让抽象方法具有接受不同输入的实现

问题描述

我正在尝试做类似以下的事情,我有一个抽象方法,它的实现者可以接受不同的输入对象。

public abstract void dostuff(Object o1, Object o2);

class 1
@Override
public void dostuff(Integer o1, Double o2){
  logic
}

class 2
@Override
public void dostuff(Double o1, Iteger o2){
  logic
}

真正的目标是拥有一个可以强制执行某些事情的抽象方法,并且一旦对象在对象内就不必强制转换,自动完成强制转换。

标签: java

解决方案


在抽象类中定义类型变量:

abstract class AbstractClass<A, B> {
  public abstract void dostuff(A o1, B o2);
}

然后在实现类中指定类型参数:

class Class1 extends AbstractClass<Integer, Double> {
  @Override public void dostuff(Integer o1, Double o2) { /* ... */ }
}

class Class2 extends AbstractClass<Double, Iteger> {
  @Override public void dostuff(Double o1, Iteger o2) { /* ... */ }
}

推荐阅读