Archief - [PROG]JAVA De klasse van objecten in een Arraylist herkennen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Handsome Hermit

Legacy Member
[FONT=verdana, arial, helvetica]Ik heb een ArrayList met verschillende objecten. Sommige van een superklasse andere van zijn subklasse. Nu wil ik alleen de objecten van de subklasse eruit halen in een bepaalde methode. Hoe kan ik kijken of het een object is van de subklasse? Concreet komt het er dus op neer dat ik een methode zoek die de klasse kan retourneren waartoe een object behoort.

Bedankt.
[/FONT]

killgore

Legacy Member
instanceof gebruiken?

if(object instanceof subKlasse) ...

edit: of wat hierboven staat. Zijn nog enkele methoden iirc.

MilM

Legacy Member
Volgens mij werkt instanceof nie (ik ben nie zeker)

Volgens mij krijgt ge true bij (bmw instanceof auto), terwijl topicstarter da juist nie wil.
Ik kan mis zijn hoor, geen zin om te testen :p

(hier in het voorbeeld is auto een superklasse van bmw)

Natuurlijk kunt ge da voorkomen door if else lussen die eerst de klassen op het laagste niveau testen en dan pas naar een niveau hoger gaan. Zo zal je nooit in die lus terecht komen van bmw - auto aangezien bmw - bmw al true zal weergegeven hebben.

Handsome Hermit

Legacy Member
bedankt, dat was het wat ik zocht.
meer bepaald nog object.getClass().getName()

[BAT] Hydra

Legacy Member
try {
Subklasse myObject = (Subklasse)anotherObject;
// code als myObject een instantiatie is van de subklasse
} catch (...) {
...
}

Timmos

Legacy Member
[BAT] Hydra;8552688 zei:
try {
Subklasse myObject = (Subklasse)anotherObject;
// code als myObject een instantiatie is van de subklasse
} catch (...) {
...
}
mhm. Iets proberen oplossen met try-catch clausules is hier toch niet echt een esthetisch mooie oplossing. Proberen casten en de Exception dan opvangen?

:/

methodes zoals getClass() bestaan voor iets he :)

BartDP

Legacy Member
Handsome Hermit zei:
bedankt, dat was het wat ik zocht.
meer bepaald nog object.getClass().getName()

je kan er ook nog object.getClass().getSimpleName() van maken ;)

[BAT] Hydra

Legacy Member
Als je expliciet het type van objecten controleert in je code is er iets mis met je code, design of aanpak. Controleer enkel expliciet op het type als dat echt moet en je niet anders kan.

killgore

Legacy Member
[BAT] Hydra;8555572 zei:
Als je expliciet het type van objecten controleert in je code is er iets mis met je code, design of aanpak. Controleer enkel expliciet op het type als dat echt moet en je niet anders kan.


Not true, je hebt vaak lijsten waar je moet gebruik maken van polymorfisme. Dan moet je heel soms wel eens controleren welk soort het exact is, hoewel ik het logischer vind dat de te gebruiken interface al beschikbaar is voor de buitenwereld in de parentklasse. Maar soms (ik denk aan Events) is het wel degelijk nodig te casten als je event vrij groot is en je niet toekomt met de geleverde interface.

Maar inderdaad, in principe is het te beperken tot een minimum.

Jellepunk

Legacy Member
[BAT] Hydra;8555572 zei:
Als je expliciet het type van objecten controleert in je code is er iets mis met je code, design of aanpak. Controleer enkel expliciet op het type als dat echt moet en je niet anders kan.

Ik denk er ook zo over, zowat de basisbeginselen van overerving tot zover ik weet.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan