本文介绍了如何多次实现相同的接口,但使用不同的泛型?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下接口,我想在我的课程中多次实现:
I have the following interface, which I want to implement multiple times in my classes:
public interface EventListener<T extends Event>
{
public void onEvent(T event);
}
现在,我希望能够通过以下方式实现此接口:
Now, I want to be able to implement this interface in the following way:
class Foo implements EventListener<LoginEvent>, EventListener<LogoutEvent>
{
@Override
public void onEvent(LoginEvent event)
{
}
@Override
public void onEvent(LogoutEvent event)
{
}
}
但是,这给了我错误:Duplicate class com.foo.EventListener
在行上:
However, this gives me the error: Duplicate class com.foo.EventListener
on the line:
class Foo implements EventListener<LoginEvent>, EventListener<LogoutEvent>
是否可以使用不同的泛型两次实现该接口?如果不是,那么在这里我可以做的下一步工作是什么?
Is it possible to implement the interface twice with different generics? If not, what's the next closest thing I can do to achieve what I'm trying to do here?
推荐答案
您需要使用内部或匿名类.例如:
You need to use inner or anonymous classes. For instance:
class Foo {
public EventListener<X> asXListener() {
return new EventListener<X>() {
// code here can refer to Foo
};
}
public EventListener<Y> asYListener() {
return new EventListener<Y>() {
// code here can refer to Foo
};
}
}
这篇关于如何多次实现相同的接口,但使用不同的泛型?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!