Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: Java ::  Nochmal: instanceof  
Gehen Sie zu Seite 1, 2  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
freakC++
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.04.2008
Beiträge: 1898
Beitrag freakC++ Mitglied 13:56:17 21.03.2012   Titel:   Nochmal: instanceof            Zitieren

Hallo zusammen,

mir ist leider noch immer nicht so klar, wie instanceof funktioniert. Ich habe Onkel Google durchstöbert, aber eine Lösung, die mir gefällt, war nicht dabei. Ich habe den instanceof Operator so verstanden, dass er prüft, ob ein Objekt obj in der Vererbungshierarchie einer Klasse cl liegt.

if(obj instanceof cl)

Falls obj eine Instanz oder eine Subinstanz von cl ist, dann ergibt der Ausdruck true. Falls obj eine Superinstanz von cl ist, so wird false zurückgegeben.

Wenn jedoch (und das verstehe ich nicht), die Klasse cl gar nichts mit "obj" zu tun hat, dann wird eine Exception geworfen? Warum? Ich verwende doch instanceof gerade dafür, dass ich herausfinde, wie die Beziehung zwischen Objekt und Klasse ist. Was hat das für einen Sinn und kann ich dieses Problem irgendwie umgehen?

Vielen Dank
LG, freakC++
SG1
Mitglied

Benutzerprofil
Anmeldungsdatum: 19.03.2001
Beiträge: 2554
Beitrag SG1 Mitglied 14:03:14 21.03.2012   Titel:              Zitieren

Falsch, instanceof wirft keine Exception. Wir kommst Du darauf? Siehe JLS 15.20.2
freakC++
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.04.2008
Beiträge: 1898
Beitrag freakC++ Mitglied 14:05:03 21.03.2012   Titel:              Zitieren

Oh ja, ich sah nur rot in meinem Compiler :D. Aber es wird ein Compilerfehler ausgegeben? Warum?
icarus2
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.09.2009
Beiträge: 1359
Beitrag icarus2 Mitglied 14:06:58 21.03.2012   Titel:              Zitieren

freakC++ schrieb:
Oh ja, ich sah nur rot in meinem Compiler :D. Aber es wird ein Compilerfehler ausgegeben? Warum?

Wie lautet denn der Compiler Fehler? Etwas Code koennte auch nicht schaden.
freakC++
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.04.2008
Beiträge: 1898
Beitrag freakC++ Mitglied 14:10:19 21.03.2012   Titel:              Zitieren

halt nen ganz normaler Compilerfehler:

Unresolved compilation problem:
Incompatible conditional operand types A and String

Die Fehlermeldung ist eindeutig, aber ich dachte instanceof wäre gerade dazu da, um zu prüfen ob obj vom Typ A, vielleicht doch vom Typ String ist....
SG1
Mitglied

Benutzerprofil
Anmeldungsdatum: 19.03.2001
Beiträge: 2554
Beitrag SG1 Mitglied 14:20:55 21.03.2012   Titel:              Zitieren

Der entsprechende Cast gibt ja auch einen Compilerfehler, also ist das doch sinnvoll.
314159265358979
Mitglied

Benutzerprofil
Anmeldungsdatum: 09.03.2010
Beiträge: 4658
Beitrag 314159265358979 Mitglied 14:28:30 21.03.2012   Titel:              Zitieren

instanceof funktioniert eben nur mit 2 Operanden, die hierarchisch verwandt sind.
freakC++
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.04.2008
Beiträge: 1898
Beitrag freakC++ Mitglied 14:35:13 21.03.2012   Titel:              Zitieren

314159265358979 schrieb:
instanceof funktioniert eben nur mit 2 Operanden, die hierarchisch verwandt sind.


Also muss ich doch schon was über das Objekt wissen? Mhhmmm....ok :)

LG, freakC++
314159265358979
Mitglied

Benutzerprofil
Anmeldungsdatum: 09.03.2010
Beiträge: 4658
Beitrag 314159265358979 Mitglied 14:44:16 21.03.2012   Titel:              Zitieren

2 x-beliebige Operanden vergleichen ergibt ja auch keinen Sinn. Das würde ja immer false ergeben. ;)


Zuletzt bearbeitet von 314159265358979 am 14:44:46 21.03.2012, insgesamt 1-mal bearbeitet
icarus2
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.09.2009
Beiträge: 1359
Beitrag icarus2 Mitglied 14:45:25 21.03.2012   Titel:              Zitieren

freakC++ schrieb:
Also muss ich doch schon was über das Objekt wissen? Mhhmmm....ok :)

LG, freakC++

Wen du den Code
Java:
1
2
3
4
5
6
7
8
9
class A
{
// Irgendwas
}
 
class B
{
// Irgendwas
}

hast, dann ist der Code
Java:
A a = new A();
if ( a instanceof B )
{
// Mach was
}

nicht sinnvoll, da dies nicht zur Laufzeit sondern bereits zur Compile-Zeit entschieden werden kann.
c++.de :: Java ::  Nochmal: instanceof  
Gehen Sie zu Seite 1, 2  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.