我正在尝试实现一个通用可调用对象,以委托对不同类型的帐户进行修改。
代码如下:

import java.util.concurrent.Callable;
class Task<T extends BaseAccount> extends Callable<T extends BaseAccount> {

  private final T t;

  public Task(T t) {
    this.t = t;
  }

  @Override
  public T call() throws Exception {
    t.increment();
    return t;
  }

}


BaseAccount只是一个抽象类,如下所示:

abstract class BaseAccount {
  abstract public void increment();
}


但是显然我没有到达那里,因为我看到了很多与泛型相关的编译错误。
希望能通过此提供帮助。

最佳答案

首先,在类中,您无需扩展接口,而是可以实现它。其次,您无需在T部分中重复BaseAccount扩展Callable的操作。只是这样做:

class task<T extends BaseAccount> implements Callable<T>


编辑

<T extends BaseAccount>类声明中的task是您声明通用类型参数T的位置,因此此处的界限限制是适当的。但是implements Callable<T>只是对类型参数T的引用,就像在您使用T的类中的其他任何地方一样–实例变量声明,构造函数和方法。

此外,Java类名称通常以大写字母开头,例如Task,但这对于解决编译器错误并不重要。

09-04 02:51