如何多次实现相同的接口

如何多次实现相同的接口

本文介绍了如何多次实现相同的接口,但使用不同的泛型?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下接口,我想在我的课程中多次实现:

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

这篇关于如何多次实现相同的接口,但使用不同的泛型?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-05 20:55