Nochmal: instanceof
-
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.
-
halt nen ganz normaler Compilerfehler:
Unresolved compilation problem:
Incompatible conditional operand types A and StringDie 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....
-
Der entsprechende Cast gibt ja auch einen Compilerfehler, also ist das doch sinnvoll.
-
instanceof funktioniert eben nur mit 2 Operanden, die hierarchisch verwandt sind.
-
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++
-
2 x-beliebige Operanden vergleichen ergibt ja auch keinen Sinn. Das würde ja immer false ergeben.
-
freakC++ schrieb:
Also muss ich doch schon was über das Objekt wissen? Mhhmmm....ok
LG, freakC++
Wen du den Code
class A { // Irgendwas } class B { // Irgendwas }
hast, dann ist der Code
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.
-
314159265358979 schrieb:
instanceof funktioniert eben nur mit 2 Operanden, die hierarchisch verwandt sind.
Nicht mir irgendwelchen beliebigen Interfaces? Wenn eine Klasse zwei Interfaces implementiert und ich eine mit dem einen Interface getypte Referenz habe, sollte ich auf das andere Interface umcasten können.
-
Mit Interfaces funktioniert es, nicht aber mit Klassen.
http://ideone.com/jvtch
-
Das ist klar.
-
Warum fragst du dann nach?
-
... siehts denn mit isAssignableFrom() aus java.reflect.Class
Bsp:
? x = getAnyObject(); if (x.getClass().isAssignableFrom(String.class)) { // wird ausgeführt wenn x eine Subklasse von String ist. }
das ist doch das was der "freak" scuht..
peac out
-
314159265358979 schrieb:
Warum fragst du dann nach?
Klar ist das, was du unverständlichweise noch hinzugefügt hast: Dass es mit Klassen nicht funktionieren würde.
-
Und du hast unverständlicherweise nicht den Teil gequotet, auf den du dich bezogen hast.
-
Ich bin davon ausgegangen, dass das klar ist.