Wie finde ich heraus, was eine Unterklasse implementiert?

A

anonym

Gast
Hallo,

ich habe eine abstrakte Klasse A, ein Interface B und zwei Klassen
"C extends A" und
"D extends A implements B"

Kann ich in einer Methode von A herausfinden, ob der Methodenaufruf auf einer Instanz von C oder einer von B stattfindet? Findet er auf D statt, soll eine Methode aus B aufgerufen werden. Ich dachte an sowas wie

Java:
if(this instanceof B){
...
}

das kompiliert so aber nicht. Gibt es eine Möglichkeit, das hin zu kriegen?

Vielen Dank schonmal,
anonym

PS: klar, ich kann eine Methode boolean hasB() machen und die in den Unterklassen überschreiben, aber SO toll ist das nicht...
 

Thief

Bekanntes Mitglied
C und D sind ja von A abgeleitet.
Wie wäre es wenn du in A die 'normale' Methode definierst, die für C gültig ist und die du in D überschreibst?

Ist vielleicht eine sauberere Lösung als dein Ansatz, denn was passiert wenn später irgendwann ein Interface F hinzukommt, das ebenfalls abgefragt werden sollte? Dann müsstest du A (also die Basis deiner Vererbungskette) verändern.

Anders müsstest du nur die (eh dafür bestimmte) Methode überschreiben.
 

markusk21

Mitglied
Ich bin ja auch noch am lernen - aber sollte in A nicht der Test abstrakt bleiben und in D dann der Tatsächliche Test implementiert werden?
Dann könnte auch der Aufruf der B-Methode in D vorgesehen werden.
Sonst würde der Test ja in jeder von A abgeleiteten Klasse stattfinden, obwohl er nur in der Klasse D wirklich gebraucht wird, oder?

So jedenfalls hab ich Objektorientierung bisher verstanden - bitte gern um Richtigstellung.
 

Michael...

Top Contributor
Abgesehen davon, dass ich keinen Grund wüsst warum das nicht komplieren sollte, stellt sich für mich die Frage für was das gut sein soll? Warum sollte eine Elternklasse von der Existenz ihrer Kindklassen wissen? Zumal es sich hier noch um eine abstrakte Klasse handelt. Liegt dann nicht irgendwo ein Fehler im Konzept vor?
 
A

anonym

Gast
hi,

erstmal danke für die Antworten. Allerdings war der Fehler ziemlich dumm: Es fehlte einfach ein import. Im Normalfall ergänzt meine IDE die automatisch, also ein Fall von zu viel Vertrauen in die Codevervollständigung...

Dann zum Design: Ob das designmäßig sinnvoll ist, habe ich auch schon ueberlegt.

Es gibt eine Registry- Klasse und einige Unterklassen von A muessen in diese Registry eingetragen werden. Nämlich alle mit einem bestimmten Interface. Nun möchte ich nicht in jeder einzelnen Unterklasse den Code zum Eintragen schreiben. Deshalb wollte ich in der Oberklasse erfragen, ob die Unterklasse das Interface erbt und wenn ja, den Eintrag vornehmen.

Jetzt fällt mir gerade auf, dass ich natürlich auch eine Klasse E extends A anlegen kann, die den Eintrag vornimmt und alles was bisher "extends A implements B" war einfach "extends E" machen, schon bin ich das Problem los.

Danke euch.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Drachenbauer Wie finde ich den Aufrufer zu einer Methode, die sich nicht in meinem Projekt befindet? Allgemeine Java-Themen 2
A Finde den Fehler nicht. Allgemeine Java-Themen 7
G Finde den Grund für ArrayIndexOutOfBounds nicht Allgemeine Java-Themen 2
B Finde letztes veränderte File Allgemeine Java-Themen 4
D Programm läuft fehlerhaft, finde den Fehler nicht Allgemeine Java-Themen 6
S Eclipse Wo finde ich die JPA Annotationen? Allgemeine Java-Themen 3
H NullPointer finde den grund nicht Allgemeine Java-Themen 9
V Wie finde ich die konkrete Implementierung? Allgemeine Java-Themen 8
chik Doppelt verkettete Liste bzw. Zirkulärliste (kleiner Fehler, den ich nicht finde) Allgemeine Java-Themen 4
T Problem, warum macht der das so(finde kein titel.) Allgemeine Java-Themen 3
B NullPointerExceptoin | finde sie nicht :( Allgemeine Java-Themen 5
G Wo finde ich die tools.jar? Allgemeine Java-Themen 10
K Bubblesort Programmierung, finde Fehler nicht . Allgemeine Java-Themen 25
LimDul Kam eine java.net.URL zu einer HashMap und ging als DNS Anfrage wieder heraus Allgemeine Java-Themen 18
nonickatall Methoden Kann man Klassen/Methoden aus Variablen heraus aufrufen? Allgemeine Java-Themen 6
D HTTP Aufruf einer Methode aus einem Servlet heraus Allgemeine Java-Themen 0
HoloYoitsu Kann .dll nur aus Eclipse heraus laden Allgemeine Java-Themen 7
Thallius Dateien Zippen und wieder heraus lesen? Allgemeine Java-Themen 4
H Input/Output Microsoft Word aus JAVA Heraus Steuern. Allgemeine Java-Themen 3
T .jar-Datei aus Java heraus aktualisieren Allgemeine Java-Themen 8
woezelmann referenz der outer class aus static nested class heraus Allgemeine Java-Themen 7
L Jar File aus Quelltext heraus starten Allgemeine Java-Themen 9
L Externes Bash Script aus Java Datei heraus starten Allgemeine Java-Themen 2
G externe Properties datei aus Jar File heraus lesen Allgemeine Java-Themen 12
S jar aus anwendung heraus ausführen Allgemeine Java-Themen 2
F CSV Datei öffnen aus JSP heraus ? Allgemeine Java-Themen 4
ARadauer Excel Datei in Excel aus Java heraus öffnen Allgemeine Java-Themen 10
B aus java heraus kompillierte Klassen - cannot be resolved Allgemeine Java-Themen 3
M PDF aus Java-Anwendung heraus steuern Allgemeine Java-Themen 5
R Rechnung aus Java heraus erstellen und drucken Allgemeine Java-Themen 8
K javax.comm Problem beim starten aus .jar heraus Allgemeine Java-Themen 3
D At-Jobs unter Solaris aus Java heraus Allgemeine Java-Themen 3
F Aus Java heraus WinAPI Funktionen benutzen Allgemeine Java-Themen 7
M externes Programm aus Java heraus starten Allgemeine Java-Themen 2
D Aus Java heraus drucken Allgemeine Java-Themen 5
KonradN Mal eine Frage zu Binary Serialization Allgemeine Java-Themen 15
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
dokan wie kann ich eine funktionierende Suchleiste erstellen Allgemeine Java-Themen 1
B Wie erstelle ich dazu eine Abfrage ob der Button gedrückt wurde? Allgemeine Java-Themen 8
J Integration pay Pale in eine JavaFx Desktop Application Allgemeine Java-Themen 1
berserkerdq2 Wenn ich einfach eine GIF in den Scenebuilder als Bild reinpacke, wird das dann asl Gif angezeigt Allgemeine Java-Themen 1
8u3631984 Strukturiertes Logging : Jedes Feld in eine seperate Zeile - aber wie ? Allgemeine Java-Themen 2
berserkerdq2 Gibt es eine saubere Dokumentation von Jfoenix? Allgemeine Java-Themen 1
M Eigene Datenstruktur um eine Menge zu speichern Allgemeine Java-Themen 3
A Wie schreibe ich eine For-Schleife in ein Stream API um? Allgemeine Java-Themen 12
E Es ist nicht möglich, eine Batch-Anweisung auszuführen. Allgemeine Java-Themen 9
T Eine Frage des Designs Allgemeine Java-Themen 2
R Best Practice Erfahrungswerte für eine Migration von JSF nach Angular (oder anderes JS-Framework) Allgemeine Java-Themen 1
H Eine Linie verkürzen Allgemeine Java-Themen 5
N rekursion mehrfach eine Methode Öffnen Allgemeine Java-Themen 4
berserkerdq2 Wenn ich eine Methode nur jede 50ms ausführen will, wie mach ich das? Allgemeine Java-Themen 4
berserkerdq2 Wie synchronisiere ich eine for-Schleife Allgemeine Java-Themen 12
berserkerdq2 Wie mache ich in IJVM eine if verzweigung? Allgemeine Java-Themen 27
F Gibt es mittlerweile eine Alternative zu DaisyDiff Allgemeine Java-Themen 2
_user_q Was brauche ich, um eine eigene "Search for updates"-Funktion einzubauen? Allgemeine Java-Themen 1
E Eine Methode einer extendeten Klasse deakitivieren Allgemeine Java-Themen 12
pizza_dox_9999 Wie füge ich eine "eigene" ScriptEngine dem ScriptEngineManager? Allgemeine Java-Themen 3
F Kennt ihr eine Library um 2 HTML Seiten zu diffen? Allgemeine Java-Themen 8
Y ImagePanel von anderer Klasse in eine MainFrame Klasse hinzufügen. Allgemeine Java-Themen 1
OnDemand Anzeigen was eine Applikation macht Allgemeine Java-Themen 1
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
J Eine Frage zu den Threads und Task Allgemeine Java-Themen 1
Tobero Wie bekomme ich in welchem Quadrat sich eine Position in einem Grid befindet Allgemeine Java-Themen 11
Tobero Wie kann man eine Poisson Disc Sampler? Allgemeine Java-Themen 7
M Openjdk - gibt es auch eine Openjre? Allgemeine Java-Themen 7
R Lambda Expression in einer Methode execute() aufrufen (execute() ist eine Methode aus dem funktionalen Interface Command) Allgemeine Java-Themen 5
S Noch eine Design-Frage zu Setter Allgemeine Java-Themen 6
N Arrayliste in eine Datei speichern Allgemeine Java-Themen 4
J Öffnen eine jar-Datei Allgemeine Java-Themen 11
Zrebna Gibt es eine Möglichkeit eine NPE zu vermeiden, wenn null returned wird? Allgemeine Java-Themen 3
S Klassen Einfügen von unbekannter menge an Variablen in eine Klasse mithilfe von ASM Allgemeine Java-Themen 5
R Wo müsste ich im Code eine Änderung vornehmen? Allgemeine Java-Themen 6
S Rückgabe einer HttpURLConnection für eine Seite einlesen bei der man eingeloggt ist..? Allgemeine Java-Themen 5
S Gibt es eine Moeglichkeit die Runtime Ausführung zu analysieren..? Allgemeine Java-Themen 7
S Habt ihr eine Idee wie man Serializierung testen kann..? Allgemeine Java-Themen 6
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
Drachenbauer warum bekomme ich hier eine NullPointerException Allgemeine Java-Themen 6
M Gibt es eine API die den aktuellen Wert eines Indikators beim Trading zurückgibt? Allgemeine Java-Themen 7
X Collections Gibt es eine Klasse welche die Vorteile von List und HashMap vereint, aber konstante Laufzeit (O(1)) hat in Java? Allgemeine Java-Themen 4
N Eine stelle der Fibonacci-Zahlenfolge ausgeben. Allgemeine Java-Themen 4
E Hat der Compiler einen Fehler oder warumbeendet return nicht eine Methode ? Allgemeine Java-Themen 7
W Collections Suche etwas Sorted-List-Artiges...hat jemand eine Idee? Allgemeine Java-Themen 13
L Methoden Über Reflections eine Methode mit aufrufen Allgemeine Java-Themen 3
S Kann ich eine Methode schreiben die alle Arten von funktionalen Interfaces akzeptiert..? Allgemeine Java-Themen 21
Drachenbauer Wie kann eine vorgegebene Farbe über einen String erkannt werden? Allgemeine Java-Themen 11
J Datenstruktur für eine Map erstellen Allgemeine Java-Themen 2
sascha-sphw Java 9 module Zugriff auf eine resource einer anderen JAR Allgemeine Java-Themen 0
pkm Kann eine ServerSocket-Klasse nicht stateful sein? Allgemeine Java-Themen 4
B Aufruf der Methode ergibt eine Exception Allgemeine Java-Themen 13
I Eine Anwendung so gut wie möglich beschützen Allgemeine Java-Themen 9
M Wie kann man eine void Methode mit Variablen von zwei verschiedenen Objekten ausführen? Allgemeine Java-Themen 15
X Wie mache ich hier eine Rekursion rein ? Allgemeine Java-Themen 7
K OOP Suche Hilfe + Erklärung für eine Hausaufgabe Allgemeine Java-Themen 1
N Über einen Button in JavaFX ein Event über eine Pipeline schicken(Netty) Allgemeine Java-Themen 1
M Login in eine Webseite mit Java Allgemeine Java-Themen 3
A NetBeans Suche Programmierer für eine Belegarbeit Allgemeine Java-Themen 11
D Warum kann ich eine (deflaut) Klasse aus einer Libary in einem anderen Projekt benutzen? Allgemeine Java-Themen 3
L Übergabe an eine eher einfache Java- Applikation wegen Kündigung Allgemeine Java-Themen 1
C Ein Iterator ist eine Implementierung des Interface Iterable? Allgemeine Java-Themen 2
M Schlüsselworte Was ist eine Java Spezifikation + JSR? Allgemeine Java-Themen 11

Ähnliche Java Themen

Neue Themen


Oben