• Wir präsentieren Dir heute ein Stellenangebot für einen Frontend-Entwickler Angular / Java in Braunschweig. Hier geht es zur Jobanzeige

Überprüfen ob übergebenes Objekt zu Generics passt

UnknownInnocent

UnknownInnocent

Bekanntes Mitglied
Hallo, ich habe folgende Struktur:

Java:
interface Label { String getName(); }

class LabelA extends Label {
    String getName() { return "LabelA"; }
}

class LabelB extends Label {
    String getName() { return "LabelB"; }
}

interface Parser { String getLabelName(); }

class ParserA {
    String getLabelName() { return "LabelA"; }
}

class ParserB {
    String getLabelName() { return "LabelB"; }
}

class X<L extends Label> {
    public X(Parser parser) {
        // Hier das Problem:
        if(parser.getLabelName() != L.getName())
            throw new ....
    }
}

Wie kann ich überprüfen, dass der übergebene Parser zu dem Label in den Generics passt? Also dass das hier durchgeht:
Java:
new X<LabelA>(new ParserA());
Folgende Sachen aber einen Fehler wefen:
Java:
new X<LabelB>(new ParserA());

new X<LabelA>(new ParserB());
 
Robert Zenz

Robert Zenz

Aktives Mitglied
Generics sind zur Laufzeit quasi nicht existent, die Information wird primaer nur beim kompilieren verwendet, bedeutet du kannst nicht direkt auf diese Informationen zugreifen.

Der Weg den mann in diesem Fall fuer gewoehnlich geht, ist es die Klasse zu uebergeben welche erlaubt oder erwartet ist.

Java:
public class X<L extends Label> {
    public X(Parser parser, Class<L> expectedLabelClass) {
        if(!parser.getLabelName().equals(expectedLabelClass.getSimpleName())) {
        }
    }
}

new X<LabelB>(new ParserB(), LabelB.class);

Was aber eine bessere Strukturierung waere, ist wenn du den Parser testen laesst ob dieser eine bestimmte Label-Klasse annehmen kann:

Java:
public interface Parser {
    public boolean accepts(Class<? extends Label> labelClass);
}

public class X<L extends Label> {
    public X(Parser parser, Class<L> expectedLabelClass) {
        if(!parser.accepts(expectedLabelClass)) {
        }
    }
}

new X<LabelB>(new ParserB(), LabelB.class);

Damit kann der Parser sehr einfach entscheiden ob er diese Klasse akzeptiert oder nicht.

Als Anmerkung: Erstens, Strings mit "==" zu vergleichen bedeutet du vergleichst die Referenz, also ob es sich um das selbe Objekt handelt. String-Konstanten sind zufaellig zur Laufzeit immer die selbe Instanz. Du willst Strings immer mit "equals" vergleichen (z.B. auch ueber Objects.equals() als Hilfe). Beispiel:

Java:
"ABC" == "ABC" // true

"ABC" == new String("ABC") // false

String value = "ABC";
value == "ABC" // true

new String("ABC") == "ABC" // false

new String("ABC").intern() == "ABC" // true

".intern()" in dem Fall retourniert die Instanz von diesem String aus dem globalen String-Cache, welcher dann wieder die selbe ist wie die Konstante.

Zweitens, wenn moeglich verwende immer Class-Instanzen und Referenzen anstelle von Strings. Das ist nicht immer moeglich (Klassen nicht bekannt zur Kompilierzeit und so weiter), aber wenn, ist es besser als Strings herum zu schieben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Y Wie kann man überprüfen, ob bei einem Print Befehl tatsächlich etwas geprintet wurde? Java Basics - Anfänger-Themen 4
P Möglichen Pfad überprüfen Java Basics - Anfänger-Themen 5
Z Kein überprüfen des gesamten Arrays möglich.(Viergewinnt Spiel) Java Basics - Anfänger-Themen 6
C String auf Dualzahl überprüfen Java Basics - Anfänger-Themen 5
L Wie Input auf verschiedene Kriterien hin überprüfen? Java Basics - Anfänger-Themen 3
P Parameter auf Datenformat überprüfen Java Basics - Anfänger-Themen 5
F Hilfe - Wahrheitswert überprüfen ohne If Java Basics - Anfänger-Themen 2
C Ganzzahlige Werte in Boolean ausgeben und überprüfen ob Primzahl oder nicht, wenn es keine Primzahl ist soll es die Primfaktorzerlegung ausgeben Java Basics - Anfänger-Themen 4
H Harshad-Zahl (Nivenzahl) und Palindrom überprüfen Java Basics - Anfänger-Themen 2
R Wie überprüfen wann der User online oder offline ist? Java Basics - Anfänger-Themen 5
G Überprüfen ob alle Ziffern von 1-9 in einem Integer vorhanden sind Java Basics - Anfänger-Themen 6
A Überprüfen, ober eine Zahl Ziffer enthält Java Basics - Anfänger-Themen 12
C Überprüfen eines Queltextes auf Syntax-Fehler und Laufzeitfehler Java Basics - Anfänger-Themen 2
Y Konkrete Hilfe gesucht - Anzahl der Stellen einer eingegebenen Zahl überprüfen Java Basics - Anfänger-Themen 5
S CSV auf doppelte Einträge überprüfen Java Basics - Anfänger-Themen 8
D Klassen Primzahlen überprüfen Java Basics - Anfänger-Themen 3
M Scanner-Eingabe nach gewissem Zeitraum überprüfen Java Basics - Anfänger-Themen 2
T String auslesen bzw. überprüfen Java Basics - Anfänger-Themen 1
Orkanson Methoden String in Wörter zerlegen und Endungen der Wörter überprüfen. Java Basics - Anfänger-Themen 4
F n-1 als Vielfaches von 20 überprüfen Java Basics - Anfänger-Themen 3
S Täglich auf Erinnerungen überprüfen Java Basics - Anfänger-Themen 5
S Eingabe auf Richtigkeit und Reihenfolg überprüfen Java Basics - Anfänger-Themen 3
L Eingabe überprüfen Java Basics - Anfänger-Themen 7
T Input/Output Int Eingabe auf Zahl überprüfen Java Basics - Anfänger-Themen 30
S Passwortchecker Sequenzen überprüfen Java Basics - Anfänger-Themen 4
L String überprüfen mit .equals .contains oder .matches? Java Basics - Anfänger-Themen 1
K Überprüfen ob Eingabe ein Float ist Java Basics - Anfänger-Themen 4
P Überprüfen ob Mausklick auf Linie ist? Java Basics - Anfänger-Themen 6
J Passwort überprüfen Java Basics - Anfänger-Themen 3
kilopack15 Array auf doppelte Elemente überprüfen Java Basics - Anfänger-Themen 16
C Stringbuffer auf Zeilenumbruch überprüfen Java Basics - Anfänger-Themen 14
T Auf Palindrom überprüfen Java Basics - Anfänger-Themen 10
H überprüfen ob in Array gleiche int-Zahlen gespeichert werden. Java Basics - Anfänger-Themen 7
m0n4ch Variablen String auf ungültige Zeichen überprüfen Java Basics - Anfänger-Themen 13
Jinnai4 Mehrere Textfelder überprüfen Java Basics - Anfänger-Themen 16
J Überprüfen, ob eine 2D Matrix ein Baum ist Java Basics - Anfänger-Themen 5
J Methoden Überprüfen ob Objekt bereits erstellt wurde Java Basics - Anfänger-Themen 2
J Überprüfen ob String eine Zahl ist Java Basics - Anfänger-Themen 2
C Bei der LinkedList auf Palindrom überprüfen Java Basics - Anfänger-Themen 4
W Methode um Nummer zu überprüfen. Java Basics - Anfänger-Themen 5
M Felder leer - überprüfen? Java Basics - Anfänger-Themen 2
H Eingegebenen String mit If überprüfen Java Basics - Anfänger-Themen 8
W String Array in Int umwandeln um auf Zahl zu überprüfen Java Basics - Anfänger-Themen 4
Z Benutzereingabe überprüfen. Java Basics - Anfänger-Themen 2
T Matrix auf Symmetrie überprüfen Java Basics - Anfänger-Themen 6
T Überprüfen, ob Objekt gelöscht wurde Java Basics - Anfänger-Themen 1
S Variablen Array in ArrayList auf doppelte Einträge überprüfen Java Basics - Anfänger-Themen 4
B Schaltjahr überprüfen (Code) Java Basics - Anfänger-Themen 4
B Datentypen Textfeld auf Nicht-Zahlen überprüfen Java Basics - Anfänger-Themen 10
J Etwas dauerhaft überprüfen, wie ? Java Basics - Anfänger-Themen 8
T CSV auf Inhalt und Zeilen überprüfen Java Basics - Anfänger-Themen 2
I Matrix überprüfen Java Basics - Anfänger-Themen 8
B Variablen Objektvariablen ständig überprüfen Java Basics - Anfänger-Themen 3
A String auf Format überprüfen Java Basics - Anfänger-Themen 7
D Javaliste auf gleiche Einträge überprüfen Java Basics - Anfänger-Themen 2
M String überprüfen ob nur Buchstaben enthalten sind? Java Basics - Anfänger-Themen 8
Todesbote String auf Muster überprüfen Java Basics - Anfänger-Themen 19
A Input/Output Input überprüfen und weiterverarbeiten Java Basics - Anfänger-Themen 10
G String Elemente auf Zahlen Überprüfen Java Basics - Anfänger-Themen 21
U JSP Password überprüfen ob es Zahlen enthält Java Basics - Anfänger-Themen 3
K Eingabe überprüfen Java Basics - Anfänger-Themen 4
B String nach regex überprüfen Java Basics - Anfänger-Themen 6
M String auf Inhalt überprüfen Java Basics - Anfänger-Themen 11
O Überprüfen ob eine Methode ausgeführt wurde Java Basics - Anfänger-Themen 10
H Mehrdimensionales Array - Inhalt auf Null überprüfen Java Basics - Anfänger-Themen 5
S Java Scanner auf Zahlen/Numerische Zeichen überprüfen Java Basics - Anfänger-Themen 15
D Eine Stelle eines Char- Arrays nach dem vorkommen in einem ganzem anderem Array überprüfen Java Basics - Anfänger-Themen 20
M Erster JAR Start überprüfen Java Basics - Anfänger-Themen 6
F TextFeld überprüfen Java Basics - Anfänger-Themen 19
S Eingabe auf int bzw. String überprüfen Java Basics - Anfänger-Themen 6
C Überprüfen auf Palindrom Java Basics - Anfänger-Themen 12
B Überprüfen von Strings schlägt fehl Java Basics - Anfänger-Themen 5
T Attribute eines anderen Objektes überprüfen und danach handeln Java Basics - Anfänger-Themen 7
A Integer Eingabe überprüfen Java Basics - Anfänger-Themen 7
A Tic Tac Toe - Brett auf Sieger überprüfen Java Basics - Anfänger-Themen 3
S Char auf Zahl überprüfen Java Basics - Anfänger-Themen 8
T Kommandozeilen Parameter überprüfen Java Basics - Anfänger-Themen 3
D Internetseite überprüfen Java Basics - Anfänger-Themen 9
S Arbeiten mit einer CSV Datei und Überprüfen von einem Datum in einem Textfeldern Java Basics - Anfänger-Themen 4
G Elemente von Feld und Liste auf Gleichheit überprüfen Java Basics - Anfänger-Themen 13
G überprüfen ob char = 'N' 'S' 'O' oder 'W' Java Basics - Anfänger-Themen 42
H Methoden Array auf Vorkommen eines Integers überprüfen Java Basics - Anfänger-Themen 2
M Argument der Kommandozeile überprüfen Java Basics - Anfänger-Themen 4
S Klassen Aufgabe: Binärbaum überprüfen Java Basics - Anfänger-Themen 16
Os-Programming Checkbox immer wieder überprüfen Java Basics - Anfänger-Themen 13
H überprüfen, ob Objekt verändert wurde Java Basics - Anfänger-Themen 11
GianaSisters Auf Datentyp überprüfen Java Basics - Anfänger-Themen 13
W Hilfe: Eingabe überprüfen Java Basics - Anfänger-Themen 8
W String überprüfen Java Basics - Anfänger-Themen 6
R Collections Text-Dateien auf Gleichheit überprüfen Java Basics - Anfänger-Themen 22
P Attribute von Objekten in Vectoren überprüfen Java Basics - Anfänger-Themen 4
D Inhalt einer Liste auf nur ein Wert überprüfen ohne die Liste komplett zu interieren Java Basics - Anfänger-Themen 6
H Alle Array-Elemente auf einmal überprüfen? Java Basics - Anfänger-Themen 10
C String überprüfen, ob gültig, sonst wiederholung der eingabe Java Basics - Anfänger-Themen 9
S Wie überprüfen das in Textfield nur Hexadezimal ist? Java Basics - Anfänger-Themen 4
C Überprüfen, ob Timer läuft Java Basics - Anfänger-Themen 3
C Problem mit Überprüfen einer Eingabe Java Basics - Anfänger-Themen 5
B chars auf Zahlen überprüfen Java Basics - Anfänger-Themen 4
S Überprüfen auf Permutation Java Basics - Anfänger-Themen 4
N FileOutputStream und existenz von Datei überprüfen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Anzeige

Neue Themen


Oben