Können wir eine Schnittstelle innerhalb einer Schnittstelle definieren?

8

Ich möchte wissen, können wir eine Schnittstelle innerhalb einer Schnittstelle definieren.  wie

%Vor%

Diese Frage wurde im Interview gestellt. Irgendwelche Echtzeit-Nutzung von diesem.

    
giri 25.02.2010, 06:42
quelle

5 Antworten

37

Ja, wir können es schaffen. Die Definition der verschachtelten Schnittstelle in Java ist wie folgt:

  

Eine verschachtelte Schnittstelle ist eine Schnittstelle, deren Deklaration im Rumpf einer anderen Klasse oder Schnittstelle auftritt. Eine Schnittstelle der obersten Ebene ist eine Schnittstelle, die keine verschachtelte Schnittstelle ist.

Weitere Informationen finden Sie .

Weiter ...

Ein Grund könnte sein, dass die äußere Schnittstelle eine Methode hat, die eine Callback-Implementierung als Argument verwendet. Die verschachtelte Schnittstelle ist in diesem Fall der Vertrag, den die Callback-Methode implementieren muss. Ich sehe keinen Grund, diese Callback-Schnittstelle auf oberster Ebene zu deklarieren.

%Vor%

Eine weitere gute Lektüre auf der Sun-Seite zu diesem Thema ist hier

Beachten Sie insbesondere, dass Sie, wenn Sie eine Schnittstelle implementieren nicht erforderlich, um irgendwelche zu implementieren Schnittstellen darin verschachtelt.

    
HotTester 25.02.2010, 06:43
quelle
8

Ja.

Sie hätten das für sich selbst testen können und in ungefähr 30 Sekunden eine völlig definitive, meinungsfreie und risikolose Antwort erhalten.

Auf eine möglicherweise falsche Antwort auf ein Forum für immer zu warten ist im Vergleich keine rationale Art der Befragung.

    
EJP 25.02.2010 09:35
quelle
4

Sicher .. Sehen Sie sich SOURCE CODE für die java.util.Map-Schnittstelle an. Die Map-Schnittstelle enthält eine geschachtelte Entry-Schnittstelle.

Interessanterweise sagt es im Quellcode einfach

%Vor%

aber der Javadoc sagt

%Vor%

Ich vermute, das liegt daran, dass verschachtelte Interfaces implizit "public static" sind, obwohl der Quellcode das nicht sagt. (Aber Methoden innerhalb einer Schnittstelle sind implizit öffentlich und können nicht statisch sein, dh nur die Instanzmethoden sind in Schnittstellen zulässig.)

-dbednar 2013-07-02

    
joe 02.07.2013 18:01
quelle
1

Wir verwenden es in unserer Anwendung, Schnittstelle innerhalb der Schnittstelle, wobei diese im Grunde genommen für funktionsspezifische Konstanten verwendet wird, so dass zufällig kein anderer neue Konstanten irgendwo anders im Projekt, in Bezug auf diesen Service1, erstellt.

Beispiel Code:

%Vor%     
kyle87 19.02.2013 19:54
quelle
0

Ja, wir können definieren.

Innerhalb der Kartenschnittstelle definieren Sie den Eintrag wie unten. öffentliche Schnittstelle Map {

%Vor%     
user4733704 31.03.2015 11:27
quelle

Tags und Links