2016-11-17 12 views
0

なぜクラス内にネストされたインターフェイスを使用するのか混乱します。私はこの問題に触れるいくつかの投稿があることを知っていますが、リスナーを使うときに彼らがどのように有益であるかにもっと興味があります。リスナー使用時のクラス内のネストされたインターフェイスの利点

私はネストされたインターフェイスについて読んでいました.1つのポストでは、リスナーを扱うときに利点があると話しました。残念ながら、彼らはなぜ拡大していませんでした。リスナーを参照するときに、これが作成されます利点の種類私は思ったんだけど

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

'Inner'はJavaの非静的クラスを指す。あなたが求めているのは、ネストされたインターフェイスです。 – EJP

答えて

1

ネストされているため、Managerと密接に関連しており、Managerによって起動されたイベントを監視するのに使用されています。 Managerクラスと同じパッケージ内で、それらを最上位インタフェースとして使用したいと考えています。それらをネスト化することは、同じ名前を持つ多くのリスナーにとって、(異なる)状況で使用される(悪い)治療法になる可能性があります。三つの異なるインターフェースを作る

は、二つの理由のために有用である:あなたがイベント

  • の一種で唯一興味を持っているとき

    • それは二つの方法のダミー実装を提供するために、あなたを強制するものではありません、それは作りますこのようにしてラムダ式またはメソッド参照として実装できる機能インタフェースをインタフェースする。
  • +0

    返事ありがとうございます。 「マネージャクラスと同じパッケージで、トップレベルのインターフェイスとして使用したいと考えています。それはあなたがまだそれから同じ機能を得ることができ、それはちょうどそれがより明確になる方法かもしれないということですか? – BlackHatSamurai

    +0

    はい。ネストされたインターフェイスは、トップレベルのインターフェイスよりも何もできません。 –

    関連する問題