Aufrufendes Objekt bestimmen (nicht die Klasse)

vimar

Bekanntes Mitglied
Hi,

ich habe eine Klasse "Crawler".

von der Klasse hab ich 2 Objekte erstellt: Crawler1 und Crawler2. weiterhin möchte ich keine id als integer in den objekten speichern (in dem sinne crawler1.id = 1, crawler2.id = 2).

eine andere klasse ruft crawler1 auf, in crawler1 wird crawler2 aufgerufen. in einer forschleife die natürlich in c1 und c2 drin ist, will ich if abfragen haben, und zwar nach dem sinn:


if (aufgerufenes objekt = crawler1) dann // das kann nur für crawler2 gelten.

mit "instanceof" würde ich nicht das genaue objekt bekommen sondern obs ne instanz der klasse crawler is.

klappt das mit this.equals(crawler1)?

super.equals() macht ja auch keinen sinn. ich müsste ansich die pointer der objekte vergleichen?
 
Zuletzt bearbeitet:
Wenn du nur zwei Instanzen von Crawler haben kannst, und du zwischen diesen beiden unterscheiden können musst, dann ist
Code:
Crawler unknwonCrawler = getCrawlerFromSomewhere();
if(unknownCrawler == crawler1) //machwas
der richtige Ansatz.
Ehrlich gesagt finde ich deine Beschreibung
von der Klasse hab ich 2 Objekte erstellt: Crawler1 und Crawler2. weiterhin möchte ich keine id als integer in den objekten speichern (in dem sinne crawler1.id = 1, crawler2.id = 2).

eine andere klasse ruft crawler1 auf, in crawler1 wird crawler2 aufgerufen. in einer forschleife die natürlich in c1 und c2 drin ist, will ich if abfragen haben, und zwar nach dem sinn:
etwas verwirrend: heissen die Instanzen jetzt Crawler1 und Crawler2 oder crawler1 und crawler2 oder c1 und c2? Und wieso ist es natürlich dass c1 und c2 in der forschleife drin sind?
Mir deucht, dass ev. dein Ansatz nicht ganz optimal ist. Aber ohne realen Code kann man da nix zu sagen.
 
Wenn Du die Klasse Crawler2 von Crawler1 ableitest und nichts erweiterst, sollte das so gehen, wie ich glaube, dass Du das machen möchtest. Crawler2 erbt alles von Crawler1, ohne etwas zu erweitern. Dann kannst Du ganz einfach mit instanceof prüfen.

public class Crawler1 {
.....
}

public class Crawler2 extends Crawler1 {
//nichts
}

public class CrawlerTest {

public static void main(String[] args) {

Crawler1 c1 = new Crawler1();
Crawler2 c2 = new Crawler2();

c1.test(1);
c2.test(2);

}
}

Oder ich verstehe es nicht richtig. Code wäre wirklich kein Fehler...

Pentalon
 

Zurück
Oben