E
erster
Gast
Malzzeit,
folgende Frage:
Jedes von Object erbende Objekt besitzt ja bekanntermaßen die Funktion .getClass(). Was genau spuckt diese eigtl. aus, eine neue Instant der Laufzeitklasse oder eine Referenz auf die Klasse selbst (wie auch immer das gehen mag)? Das wäre nämlich wichtig zu wissen, um zu erfahren, ob zwei Attribute (siehe folgender Code) denselben Datentypen besitzen
Im Endeffekt soll herauskommen, dass zumindest am1 und am3 einer Gleichheitsmethode genügen, damit ich feststellen kann, ob das Attribute mit den Metadaten AttributeMetaData bereits vorhanden ist. Da
mir jedoch nur class AttributeMetaData ausspuckt (und nicht den aktuellen Datentypen des Templates AM), kann ich damit nichts anfangen.
Wie genau sähe also ein Gleichheitstest aus, wenn vom Template AM Datentyp UND Name identisch sein sollen? Das folgende jedenfalls schonmal nicht:
folgende Frage:
Jedes von Object erbende Objekt besitzt ja bekanntermaßen die Funktion .getClass(). Was genau spuckt diese eigtl. aus, eine neue Instant der Laufzeitklasse oder eine Referenz auf die Klasse selbst (wie auch immer das gehen mag)? Das wäre nämlich wichtig zu wissen, um zu erfahren, ob zwei Attribute (siehe folgender Code) denselben Datentypen besitzen
Java:
AttributeMetaData<Integer> am1 = new AttributeMetaData<Integer>("myInt");
AttributeMetaData<Double> am2 = new AttributeMetaData<Double>("myDouble");
AttributeMetaData<Integer> am3 = new AttributeMetaData<Integer>("MyInt");
System.out.println(am1.equals(am2));
System.out.println(am1.equals(am3));
System.out.println(am2.equals(am1));
System.out.println(am2.equals(am3));
System.out.println(am3.equals(am1));
System.out.println(am3.equals(am2));
System.out.println(am1.getClass());
Im Endeffekt soll herauskommen, dass zumindest am1 und am3 einer Gleichheitsmethode genügen, damit ich feststellen kann, ob das Attribute mit den Metadaten AttributeMetaData bereits vorhanden ist. Da
Code:
am1.getClass()
Wie genau sähe also ein Gleichheitstest aus, wenn vom Template AM Datentyp UND Name identisch sein sollen? Das folgende jedenfalls schonmal nicht:
Java:
public boolean equals(AttributeMetaData a) {
if (this.getClass().equals(a.getClass()) && this.name.equals(a.name)) return true;
return false;
}