Frage zu Interfaces

Hijo2006

Aktives Mitglied
Hallo,

ich habe gerade ein größerer Stück Code vor mir, dass ich in Eclipse durchgehe.
Nun bin ich auf ein Interface gestossen, zu dem ich die im Interface deklarierte
Methode in der Implementierung suche.
Meines Wissens nach, muss doch jede in einem Interface deklarierte Methode
in einer konkreten Klasse implementiert werden, oder?
Was ich lediglich finde, sind die Aufrufe dieser Methode aber keine konkrete
Ausformulierung.

Aber mglw. habe ich da was nicht in Gänze verstanden

danke
 
Man kann sich die Implementierenden Klassen anzeigen lassen, da gibts nen Shortcuts für.

Allerdings muss die Implementation nicht im gleichen Projekt liegen, uU hast du also einfach Pech
 
Man kann sich aber auch von der Verwendung aus hocharbeiten, dann findet man irgendwann die stelle, an der es erstmalig vorkommt.
 
ich habe es über "show hierarchies" probiert, nur da tauchen ausschliesslich die
Aufrufe über ein jeweiliges Objekt auf
 
Vielleicht hier eine Frage, die etwas grundsätzlicher ist: Wie macht man am geschicktesten eine CodeReview eines bestehenden Codes? Ich habe mir die Packages über Maven eingebunden und arbeite in Eclipse.

Danke
 
Meines Wissens nach, muss doch jede in einem Interface deklarierte Methode
in einer konkreten Klasse implementiert werden, oder?
Nein. Oder zumindest missverständlich ausgedrückt. Jede nicht abstrakte Klasse, die ein interface implementiert, muss eine Implementierung aller im interface deklarierten Methoden anbieten.
Was ich lediglich finde, sind die Aufrufe dieser Methode aber keine konkrete
Ausformulierung.
nur da tauchen ausschliesslich die
Aufrufe über ein jeweiliges Objekt auf
Auf welchem Objekt werden die Methoden denn aufgerufen?
 
Wie macht man am geschicktesten eine CodeReview eines bestehenden Codes?
Das hängt ganz davon ab mit welchem Ziel du diesen CodeReview machen willst. Willst du ihn z.B. machen um den Code zu verstehen ? Dann musst du dir eigentlich eher die javadoc der Klassen und Methoden ansehen falls vorhanden ansonsten den Code soweit dass du verstehst was in der jeweiligen Klasse/Methode gemacht wird. Willst du den CodeReview durchführen um vielleicht die Einhaltung von Coderichtlinien etc. zu überprüfen dann musst du wohl oder übel den ganzen Code anschauen. Ich denke ein allgemeines Vorgehen gibt es da nicht.
 
wenn ich es nun richtig beschreibe, über ein Objekt auf das Interface
Verstehe ich nicht. Dann mal langsam:
Du hast ein interface
Java:
public interface AnInterface {
    public void aMethod();
}
und einen code, in dem aMethod() steht.
Dann sehe ich zwei Möglichkeiten:
1. Der Methodenaufruf hat die Form anInstance.aMethod(). Dann ist anInstance eine Instanz einer Klasse, die das interface implementiert, und die die Methode aMethod() wird auf dem Objekt anInstance aufgerufen.
2. Der Methodenaufruf erfolgt ohne vorangestelltes "anInstance". Dann ist die Klasse bzw. die aktuelle Instanz, in der der Methodenaufruf steht, das Objekt, auf dem die Methode aufegrufen wird. Dann muss aber die Klasse in der der Methodenaufruf steht, oder eine Superklasse, das interface implementieren.[/code]
 
Nein

dem Bsp. folgend ist es

AnInterface a = ...
a.aMethod();

Und was ich nicht finde im Code ist die Implementierung der Methode aMethod().

Danke
 
Das hängt ganz davon ab mit welchem Ziel du diesen CodeReview machen willst. Willst du ihn z.B. machen um den Code zu verstehen ? Dann musst du dir eigentlich eher die javadoc der Klassen und Methoden ansehen falls vorhanden ansonsten den Code soweit dass du verstehst was in der jeweiligen Klasse/Methode gemacht wird. Willst du den CodeReview durchführen um vielleicht die Einhaltung von Coderichtlinien etc. zu überprüfen dann musst du wohl oder übel den ganzen Code anschauen. Ich denke ein allgemeines Vorgehen gibt es da nicht.

Ja, ich wil den Code verstehen und den Weg der Aufrufe beginnend mit den main-Methode 🙂

Danke
 
entweder kommt danach ein new ..., oder das ist eine einfache Zuweisung, dann guck dir an woher das zugewiesene Objekt kommt.

Wenn du mit eclipse arbeitest kannst du im Falle von AnInterface a = new Bla(); auch einfach das Bla() anklicken und über Navigate ->Open Declaration (shortcut F3) direkt in die Klasse Bla springen, die das Interface implementieren müsste.
 
Wenn du mit eclipse arbeitest kannst du im Falle von AnInterface a = new Bla(); auch einfach das Bla() anklicken und über Navigate ->Open Declaration (shortcut F3) direkt in die Klasse Bla springen, die das Interface implementieren müsste.
Wenn es da ein new ... gibt, hätte Eclipse es aber auch direkt als Interface-Implementation gezeigt...
 
ja, da findet er aber nix. Ich vermute, ich habe ncht den kompletten Quellcode. Es gibt nämlich in der ausführbaren JAR noch ein paar *.class-Dateien, die drauf schliessen lassen könnten,dass dort die Implementierung drin liegt
 
ja, da findet er aber nix. Ich vermute, ich habe ncht den kompletten Quellcode. Es gibt nämlich in der ausführbaren JAR noch ein paar *.class-Dateien, die drauf schliessen lassen könnten,dass dort die Implementierung drin liegt

Guck doch nach..?! Wenigstens Klassen-Namen und Methoden-Signaturen usw solltest du ja trotzdem auslesen können. Jedenfalls war das bei allen .jar mit denen ich normalerweise arbeite bisher der Fall...
 

Zurück
Oben