Casten (Typumwandlung)

java__neuling

Aktives Mitglied
Guten Morgen,

ich bins mal wieder -_- und habe ein paar Fragen zur Typumwandlung.

Ich habe momentan folgendes gegeben.
Ich habe ein Array in dem eine bestimmte Anzahl von unterschiedlichen Objekten enthalten ist.

Jetzt möchte ich die Objekete mit Hilfe der Methoden, die sich in anderen Klassen befinden,
verändern.

Normlerweise würde ich jetzt einfach schreiben "klassennamne.methodenname....." und einfach mit Hilfe der Methoden die Objekte anpassen.
Tja jetzt bekomme ich aber gesagt, dass das angeblich nicht möglich ist man müsste erst downcasten bzw. eine Typumwandlung durchführen bevor man auf die Methoden zugreifen kann......

Das verstehe ich nicht. Warum soll ich downcasten (und was ist das überhaupt?) kann doch so wie immer einfach auf die Methoden zugreifen, oder nicht?

Wäre schön wenn ihr mir mal wieder ein paar typs geben könntet!

Danke und noch nen schönen Samstag!
java__neuling :D
 

tuttle64

Bekanntes Mitglied
Das verstehe ich nicht. Warum soll ich downcasten (und was ist das überhaupt?) kann doch so wie immer einfach auf die Methoden zugreifen, oder nicht?


ein downcast ist wenn von einem grösseren zu einem kleineren Datentypen ungewandelt werden muss, also beispielsweise von int in ein byte. hier verlangt der compiler ein explizites casting, da ein downcast ein "lost of precision" zur folge haben kann. wenn du deinen code postest ist ersichtlich, wo das problem ist.
 

java__neuling

Aktives Mitglied
okay, dass habe ich auch schon gehört aber bezogen auf Objekte und deren methoden gibt es ja doch unterschiede..... hier erstmal der code:


wie man sehen kann gibt es noch kein casting.
angeblich soll bzw muss abe rin der zweiten schleife casting genutzt werden.....wieso?

danke!
 
Zuletzt bearbeitet:

Landei

Top Contributor
Java:
if(form[i] instanceof Kreis2dModell) {
    Kreis2dModell kreisModel = (Kreis2dModell) form[i]; //das Casten
    kreisModel.setRadius(kreisModel .getRadius() * 2);
}
//u.s.w.
 
G

Gast2

Gast
Java:
    if(form[i] instanceof Kreis2dModell)
    {
    Kreis2dModell.setRadius(Kreis2dModell.getRadius() * 2);
    }
Zum ersten macht die statische Methode setRadius bzw. getRadius keinen sinn. Das sollten vermutlich instanzmethoden sein. Ansonsten wären für alle Kreise die Radien identisch.
Du müsstest die Methode also auf form aufrufen, und da bekommst du dann probleme. in deinem form array sind Object drin, und auf nem Object kannst du nicht setRadius aufrufen. (weils die Methode in nem Object einfach nicht gibt).
D.h. du musst die Instanz erst auf Kreis2dModell casten damit du die Methode aufrufen kannst, d.h. etwa so:
Java:
((Kreis2dModell) form[i]).setRadius(42);
 

java__neuling

Aktives Mitglied
erstmal wieder danke für die schnellen antworten. ;-)

so jetzt sind wir genau an der stele wo ich mein problem habe.

@EikeB
Du sagt also, dass ich auf meine Objekte im array nicht setradius ausführen kann.

Diese Aussage verstehe ich nicht! Ich erkläre euch wieso.

Ich denke momentan so.

Es gibt Objekte wie zum Beispiel "Kreis2dModell".
Dieses Objekt wird in meinen Array hinterelgt und man kann dann zum Beispiel auf dieses Objekt zugeifen indem man schreibt form.
Selbstverstädnlich muss für die Variable i irgendeine Zahl hinterlegt sein.
Z.B. 5 -> form[5] ist dann aus meiner sicht das gleiche wie zum beispiel kreis2dmodell

Noch etwas deutlicher:

Java:
Kreis2dModell kreis2dModell = new Kreis2dModell(new Punkt2d(10,20),30/Math.PI);

oder

Java:
Kreis2dModell form[i] = new Kreis2dModell(new Punkt2d(10,20),30/Math.PI);

letztentlich erzeuge ich einmal ein Objekt dass kreis2dmodell heißt und beim anderen ein Objekt dass ich über form aufrufen kann also z.B. form[5].

Wenn ich die Methode so aufrufen kann
Java:
kreis2dModell.setRadius
muss ich diese doch auch so aufrufen können
Java:
form[5].setRadius

das verwirrt mich total.......???:L
 

Michael...

Top Contributor
Die Aussage von EikeB bezog sich auf den statischen Methodenaufruf, mit dem Hinweis die Methode an dem jeweiligen Objekt und nicht an der Klasse aufzurufen (letzteres macht ja keinen Sinn und führt hoffentlich zu einem Kompilierfehler)

Wenn ich die Methode so aufrufen kann
Java:
kreis2dModell.setRadius
muss ich diese doch auch so aufrufen können
Java:
form[5].setRadius
Wenn form ein Kreis2dModell-Array ist/wäre ja, in Deinem ursprünglichen Code ist form aber ein Object - Array ==> Nein, man muss erst prüfen und ggf. casten.
 

java__neuling

Aktives Mitglied
Die Aussage von EikeB bezog sich auf den statischen Methodenaufruf, mit dem Hinweis die Methode an dem jeweiligen Objekt und nicht an der Klasse aufzurufen (letzteres macht ja keinen Sinn und führt hoffentlich zu einem Kompilierfehler)


Wenn form ein Kreis2dModell-Array ist/wäre ja, in Deinem ursprünglichen Code ist form aber ein Object - Array ==> Nein, man muss erst prüfen und ggf. casten.

naja form ist schon ein object array aber in form liegt doch zum beispiel mein kreis.

wenn ich mir via system.out.println kreis2dmodell ausgeben lasse oder form kriege ich das gleiche raus......:(
 
G

Gast2

Gast
wenn ich mir via system.out.println kreis2dmodell ausgeben lasse oder form kriege ich das gleiche raus......

Ja, weils auch die selben Objekte sind, wäre schlimm wenn du verschiedenen Sachen angezeigt bekommen würdest :)

Der unterschied ist eben der Typ der Referenz (hoffe man nennt das so...). kreis2dmodell hast du als Kreis2dModell deklariert, dein Array beinhaltet aber Objects.
D.h. auf kreis2dmodell kannst du alle Methoden der Klasse Kreis2dModell (und sämtlicher Oberklassen) aufrufen, auf form aber nur Methoden der Klasse Object.
 
G

Gast2

Gast
Ja das schaut schon besser aus.

Die Methoden in deinen jeweiligen Klassen sind jetzt nichtmehr static?
 

java__neuling

Aktives Mitglied
ne das steht ja alles alles innerhalb einer schleife der erste code den ich gepostet habe war in dieser
hinsicht falsch.

wenn ich jetzt versuche zu komplieren bekomme ich einen fehler:

Testlauf.java:41: <identifier> expected
private Form2dModell;
^
Testlauf.java:175: illegal start of expression
public String toString(){
^
Testlauf.java:175: ';' expected
public String toString(){
^
Testlauf.java:184: reached end of file while parsing
}
^
4 errors

Muss aber dazu sagen, dass der schon vorher da war.

Könnt ihr mir sagen wo ran das liegt???
 
G

Gast2

Gast
Java:
private Form2dModell;
Da fehlt der Variablenname. Die restlichen Fehler bauen wohl hierdrauf auf oder dir fehlen irgendwo klammern.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
tom.j85 TicTacToe - probleme beim Casten Java Basics - Anfänger-Themen 6
B Datentypen Welcher Typ wird beim Casten übernommen? Java Basics - Anfänger-Themen 12
G Probleme beim casten von double zu int Java Basics - Anfänger-Themen 3
BuTTerBroTHDx Char Wert in int casten ? Java Basics - Anfänger-Themen 4
A Vererbung Mit Casten direkt auf Sub-Klasse Zugreiffen Java Basics - Anfänger-Themen 6
N Variablen zurück casten Java Basics - Anfänger-Themen 3
F Casten bei Implements Java Basics - Anfänger-Themen 2
S Klassen casten, IS-A Beziehung Java Basics - Anfänger-Themen 5
J Generics casten Java Basics - Anfänger-Themen 14
U Klassen Dynamisches Casten? Java Basics - Anfänger-Themen 39
T Probleme beim casten Java Basics - Anfänger-Themen 9
M Casten Java Basics - Anfänger-Themen 2
K Collections Vector zu String casten Java Basics - Anfänger-Themen 4
S Polymorphes Objekt in eigentliche Klasse casten Java Basics - Anfänger-Themen 6
masii Methoden Parameter casten? Java Basics - Anfänger-Themen 2
D Datentypen Abstrakter Datentyp lässt sich nicht casten Java Basics - Anfänger-Themen 7
U ArrayList casten Java Basics - Anfänger-Themen 37
F g.drawLine in g 2D casten Java Basics - Anfänger-Themen 5
A Klassen ArrayList richtig / sicher Casten? Java Basics - Anfänger-Themen 3
J Frage zu generischer Klasse und Casten Java Basics - Anfänger-Themen 14
M Frage zum Casten von Objekten Java Basics - Anfänger-Themen 5
M sicheres/unsicheres Casten bei Objekten Java Basics - Anfänger-Themen 13
D Object auf JTextpane / jTextArea casten? Java Basics - Anfänger-Themen 3
B Casten oder vielleicht was anderes? Java Basics - Anfänger-Themen 9
T Boolean in ein Objektdatentyp casten möglich? Java Basics - Anfänger-Themen 5
P Casten Hash Map Java Basics - Anfänger-Themen 4
W Auf 'this' casten Java Basics - Anfänger-Themen 3
M Dynamisches Casten mal wieder Java Basics - Anfänger-Themen 4
M casten Java Basics - Anfänger-Themen 11
D Casten eines Objekts: Funktion der Oberklasse aufrufen Java Basics - Anfänger-Themen 4
G Datentypen char to int casten - falsches Ergebnis! Java Basics - Anfänger-Themen 6
S casten array in int von float Java Basics - Anfänger-Themen 5
A Dynamisches casten Java Basics - Anfänger-Themen 19
C Probleme beim casten und Objekt zugriff Java Basics - Anfänger-Themen 12
P Klasse nach Element casten Java Basics - Anfänger-Themen 4
G Double casten Java Basics - Anfänger-Themen 8
O Object nach Double casten Java Basics - Anfänger-Themen 11
L Object[] in String[] casten Java Basics - Anfänger-Themen 7
V Gelesene FTP Datei richtig casten Java Basics - Anfänger-Themen 9
T Properties casten Java Basics - Anfänger-Themen 4
G Arrays casten? Java Basics - Anfänger-Themen 12
G string "null" in null casten Java Basics - Anfänger-Themen 3
M casten und Generics Java Basics - Anfänger-Themen 9
S Objekt Casten Java Basics - Anfänger-Themen 4
G String nach int casten Java Basics - Anfänger-Themen 5
G Vektor auslesen und als int Variable casten Java Basics - Anfänger-Themen 4
G String in Date casten. Java Basics - Anfänger-Themen 7
G String in Date casten Java Basics - Anfänger-Themen 4
G String in Long casten Java Basics - Anfänger-Themen 2
G Object[] [] nach vector casten. Java Basics - Anfänger-Themen 3
G printStackTrace(); in String casten Java Basics - Anfänger-Themen 3
G String in int casten Java Basics - Anfänger-Themen 2
G Integer[] nach int[] casten - wie? Java Basics - Anfänger-Themen 2
D Arrays casten Java Basics - Anfänger-Themen 12
G Casten ? Java Basics - Anfänger-Themen 3
HaukeG Casten to String und Vergleichen Java Basics - Anfänger-Themen 2
G ich komm nicht weiter -> String in int casten Java Basics - Anfänger-Themen 4
T Casten von Choice auf Vector oder Object[] Java Basics - Anfänger-Themen 14
B Vector nach float[] casten Java Basics - Anfänger-Themen 6
G String zu byte[] "casten"? Java Basics - Anfänger-Themen 3
M Hin und Her Casten Object->int und int->Object Java Basics - Anfänger-Themen 3
T Typsicheres casten eines Objects Java Basics - Anfänger-Themen 5
D Object[] in Liste casten? Java Basics - Anfänger-Themen 8
T Chaosprogrammierer hat einen fehler beim casten? Java Basics - Anfänger-Themen 5
J Attribut casten Java Basics - Anfänger-Themen 3
A Array mit generischen Typen casten? Java Basics - Anfänger-Themen 6
C Automatisches Casten => inkompatibel Java Basics - Anfänger-Themen 7
G Byte-Code einlesen und zu Hex casten Java Basics - Anfänger-Themen 2
T Object[] zu String[] casten? Java Basics - Anfänger-Themen 3
R Double nach Integer casten Java Basics - Anfänger-Themen 8
L Adresse in String[] casten Java Basics - Anfänger-Themen 6
M Object auf Interface casten? Geht das? Java Basics - Anfänger-Themen 21
U ArrayLists und Casten Java Basics - Anfänger-Themen 2
O TreeMap nach Object[] casten? Java Basics - Anfänger-Themen 3
M Casten bei Objekten? Java Basics - Anfänger-Themen 4
S casten von Interface zu Klasse unterbinden Java Basics - Anfänger-Themen 15
M long nach String casten Java Basics - Anfänger-Themen 2
U String nach Integer Casten. Java Basics - Anfänger-Themen 4
G Sting nach int casten Java Basics - Anfänger-Themen 13
A Object casten? Java Basics - Anfänger-Themen 3
R Casten Java Basics - Anfänger-Themen 3
F Casten: Object nach Array Java Basics - Anfänger-Themen 10
M Casten Java Basics - Anfänger-Themen 2
H komme mit casten nicht klar Java Basics - Anfänger-Themen 3
C Typumwandlung von int<-->double Java Basics - Anfänger-Themen 6
C Implizite Typumwandlung nach Java 8 anders? Java Basics - Anfänger-Themen 7
J Frage zur expliziten Typumwandlung Java Basics - Anfänger-Themen 5
jueki Präzision bei Typumwandlung zwischen double und String Java Basics - Anfänger-Themen 14
H Typumwandlung String --> Int (ganz einfach) Java Basics - Anfänger-Themen 9
B Typumwandlung Java Basics - Anfänger-Themen 2
P Typumwandlung Object in double Java Basics - Anfänger-Themen 12
S Typumwandlung String zu double? Java Basics - Anfänger-Themen 6
V Auf Typumwandlung prüfen Java Basics - Anfänger-Themen 8
B Typumwandlung von int nach String Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben