泛型,你已经知道泛型类型的类型?

时间:2014-02-16 12:01:43

标签: java generics conventions

给出以下界面:

Interface Executor<T extends Form>
{
   public Result execute( Request<T> request);
}

以及此接口的许多实现,例如:

  • LoginExecutor
  • AddContactExecutor

对于每个实现,我确切地知道T的价值。

例如,对于LoginExecutorT将为LoginForm extends Form等。

在这种情况下定义我的实现的传统方法是什么?如果我这样做:

public LoginExecutor<LoginForm> implements Executor<LoginForm>
{
   public Result execute(LoginForm request) {...}
}

这给了我一个错误。所以我正在做以下事情:

public LoginExecutor<T extends LoginForm> implements Executor<T>
{
   public Result execute(T request) {...}
}

这似乎有效,但是我想知道是否有更好/更传统的方式来做这件事。

1 个答案:

答案 0 :(得分:3)

通常,如果您知道通用类型,则可以执行以下操作:

public LoginExecutor implements Executor<LoginForm>
{
   public Result execute(LoginForm request) {...}
}

顾名思义,这种方法用于通用编程。当知道类型并且您想要用于特定类型时,您只需使用类型实现,并且从泛型变为特定类型。