2016-11-17 69 views
0

我很困惑你爲什麼要使用嵌套在類中的接口。我知道有一些文章涉及到這個問題,但我更感興趣的是如何使用監聽器。使用監聽器時類內嵌套接口的優點

我在閱讀關於嵌套接口的內容,一篇文章談到了與監聽器一起工作時的優勢。不幸的是,他們沒有擴大爲什麼。目前的一個項目我的工作有一個類,看起來像:

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(); 
    } 
    ... 
} 

爲什麼我要使用這個而不是傳統的接口?

+0

'內部'指的是Java中的非靜態類。你問的是嵌套接口。 – EJP

回答

1

被嵌套表明它們與經理密切相關,並且用於監聽經理髮起的事件。我仍然更喜歡它們作爲頂層接口,與Manager類相同。使它們嵌套也可能是許多具有相同名稱但用於不同情境的聽衆的(不良)治療方法。

製作三種不同的接口是有幫助的,原因有二:

  • 它不會強迫你提供的兩種方法啞實現,當你只在一個類型的事件感興趣
  • 它使接口功能接口,因此可以實現爲lambda表達式或方法引用
+0

謝謝你的回覆。當你說,「我仍然會選擇它們作爲頂級界面,與Manager類相同。」這是否意味着你仍然可以從它獲得相同的功能,而這可能只是一種更明確的關係方式? – BlackHatSamurai

+0

是的。一個嵌套的接口不能做任何更高層次的接口。 –