0

我正在尝试实现一个通用的可调用来委派不同类型帐户的修改。代码如下所示:

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

但显然我没有到达那里,因为我看到了很多与泛型相关的编译错误。非常感谢您的帮助。

4

1 回答 1

6

首先,在一个类中,您不扩展接口,而是实现它。其次,您不需要在零件中重复T延伸。只需这样做:BaseAccountCallable

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

编辑

<T extends BaseAccount>类声明中的是task您声明泛型类型参数的地方T,因此此处适合使用边界限制。Butimplements Callable<T>只是对类型参数的引用T,就像您使用的类中的其他任何地方一样T——实例变量声明、构造函数和方法。

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

于 2013-04-08T16:48:35.553 回答