给出以下界面:
Interface Executor<T extends Form>
{
public Result execute( Request<T> request);
}
以及此接口的许多实现,例如:
LoginExecutor
,AddContactExecutor
等对于每个实现,我确切地知道T
的价值。
例如,对于LoginExecutor
,T
将为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) {...}
}
这似乎有效,但是我想知道是否有更好/更传统的方式来做这件事。
答案 0 :(得分:3)
通常,如果您知道通用类型,则可以执行以下操作:
public LoginExecutor implements Executor<LoginForm>
{
public Result execute(LoginForm request) {...}
}
顾名思义,这种方法用于通用编程。当知道类型并且您想要用于特定类型时,您只需使用类型实现,并且从泛型变为特定类型。