首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >泛型callable

泛型callable
EN

Stack Overflow用户
提问于 2013-04-09 00:45:38
回答 1查看 6.1K关注 0票数 0

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

代码语言:javascript
复制
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只是一个抽象类,如下所示:

代码语言:javascript
复制
abstract class BaseAccount {
  abstract public void increment();
}

但很明显,我没有做到这一点,因为我看到了许多与泛型相关的编译错误。会很感激你能帮上忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-09 00:48:36

首先,在一个类中,你不需要扩展一个接口,而是实现它。其次,您不需要重复T扩展了Callable部件中的BaseAccount。只需执行以下操作:

代码语言:javascript
复制
class task<T extends BaseAccount> implements Callable<T>

编辑

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

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15884556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档