使用监听器时类内嵌套接口的优点

时间:2016-11-17 23:21:14

标签: java oop interface

我很困惑你为什么要使用嵌套在类中的接口。我知道有几个帖子涉及这个主题,但我更感兴趣的是它们在使用听众时是如何有益的。

我正在阅读有关嵌套接口的内容,有一篇文章谈到了在使用监听器时它是一个优势。不幸的是,他们没有扩大原因。我正在处理的当前项目有一个看起来像这样的类:

public class Manager extends BaseManager{

   public interface FollowedTopicListener extends BaseListener{
      void onLoadFollowedTopics(List<Tag> tags);
   }

       public interface FollowTopicsListener extends BaseListener {
        void onTopicsFollowed();
    }

    public interface UnFollowTopicsListener extends BaseListener {
        void onTopicsUnFollowed();
    }
    ...
}

我想知道在引用侦听器时它会产生什么样的优势。另外,为什么不创建一个侦听器。类似的东西:

public class Manager extends BaseManager{

    public interface FollowUnfollowTopicsListener extends BaseListener {
        void onLoadFollowedTopics();
        void onTopicsFollowed();
        void onTopicsUnFollowed();
    }
    ...
}

为什么我要使用它而不是传统界面?

1 个答案:

答案 0 :(得分:3)

嵌套使得它非常清楚,它们与Manager密切相关,并且用于监听Manager发起的事件。我仍然希望它们作为顶级接口,与Manager类在同一个包中。使它们嵌套对于许多具有相同名称但在不同环境中使用的侦听器来说也是一种(坏)治疗方法。

制作三种不同的界面有两个原因:

  • 当你只对一种事件感兴趣时,它并没有强迫你提供两种方法的虚拟实现
  • 它使接口成为一个功能接口,因此可以实现为lambda表达式或方法引用