Ich habe eine Klasse mit vielen erweiterten Unterklassen:Wie erhalte ich eine eindeutige ID pro Klassenerweiterung?
class FirstImplementation extends Mother { [...]
class SecondImplementation extends Mother { [...]
class ThirdImplementation extends Mother { [...]
Was ich versuche, ist eine einfache und leichte Art und Weise zu tun, die gleiche Implementierung zu wissen, ob zwei Instanzen von Mother
Klasse:
Mother a = new FirstImplementation();
Mother b = new SecondImplementation();
Mother c = new FirstImplementation();
a.sameKindOf(b); // return false;
a.sameKindOf(c); // return true;
Meine Idee ist es, ein ganze Zahl ID-Feld in jeder Mother
Instanz festgelegt, und es nur in sameKindOf
Funktion vergleichen:
public class Mother {
private final int ID;
protected Mother(int ID) {
this.ID = ID;
}
public int getID() {
return this.ID;
}
public boolean sameKindOf(Mother other) {
return this.ID == other.getID();
}
}
Jede Erweiterung von Mother
soll den Konstruktor von Mother mit einer genauen ID aufrufen.
Meine Frage ist: Gibt es eine Möglichkeit, jedes Mal, wenn ich eine neue Erweiterung erstelle, automatisch eine andere ID zu geben, oder muss ich es selbst machen, indem ich in jeder Konstruktorklasse eine andere Nummer gebe?
Wenn nicht, gibt es einen einfacheren Weg, um zu erreichen, was ich versuche zu tun?
In dieser speziellen Situation konnten Sie nicht 'instanceof 'alle verwenden. Sie könnten jedoch 'a.getClass() == b.getClass()' machen. –
Wenn Sie den instanceof-Operator nicht verwenden möchten, verwenden Sie den Klassenvergleich. 'return this.getClass() == other.getClass();' –
@TeemuIlmonen Wäre es so schnell wie ein Ganzzahlvergleich? Wenn ja, posten Sie Ihren Kommentar als Antwort und ich akzeptiere ihn. – Aracthor