通用可调用

IUn*_*own 0 java generics callable

我试图实现一个通用的callable来委派不同类型的帐户的修改.代码如下所示:

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;
  }

}
Run Code Online (Sandbox Code Playgroud)

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

abstract class BaseAccount {
  abstract public void increment();
}
Run Code Online (Sandbox Code Playgroud)

但显然我没有到达那里,因为我看到很多与泛型有关的编译错误.希望通过这一点获得帮助.

rge*_*man 6

首先,在类中,您不扩展接口,而是实现它.其次,您不需要重复该部分中的T扩展.这样做:BaseAccountCallable

class task<T extends BaseAccount> implements Callable<T>
Run Code Online (Sandbox Code Playgroud)

编辑

<T extends BaseAccount>task类的声明是你声明了泛型类型参数T,所以边界限制是适当这里.但implements Callable<T>它只是对类型参数的引用T,就像您使用的类中的其他地方一样T- 实例变量声明,构造函数和方法.

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