Wie heisst das?



  • Lass dich nicht verrückt machen... Ob array oder arraylist nimmt sich nichts...

    Object o[] = new Object[100];

    Wie du es drehst und wendest... Du weißt nie was da drin sein kann...
    Wenn du nun ne klasse schreibst, was auch immer für eine (Ohne generics, denn davon reden wir hier), dann hast da noch mehr probleme...

    public void mirDochWurst(Object o)

    So... Jetzt kannst du nur kacke machen... Und schön dass das Polymorphi heißt. Das macht es nicht besser...
    Du redest dich hier um Kopf und Kragen.

    Denn wir reden hier von, wie Zeus schon sagte, von Steinzeit-Java...
    Und wenn du dich auf den Kopf stellst. In einem heutigen Programm hat sowas:

    public void mirDochWurst(Object o)

    nichts zu suchen...
    Das kannst du, wenn dir nur Methoden wichtig sind mit einem Interface biegen, und wenn du dir über das tatsächliche Objekt sicher sein willst mit Generics lösen.



  • Fischkopf2009 schrieb:

    Wenn nun von einem kleineren in einen größereb Typen umgewandelt werden soll (int nach float) dann geht das ohne Probleme (impliziertes Konvertieren). Umgekehrt funktioniert das nicht automatisch, da es hier zu INformationsverlusten kommen kann, deshlab expliziet und der User muss es selbst machen.

    Von int zu float kommt es auch zu Informationsverlusten oder was denkst du, warum float mehr unterschiedliche Zahlen darstellen kann als int? Der Unterschied ist, dass bei int -> float die letzten Stellen abgeschnitten werden, während bei float -> int die ersten Stellen wegfallen.

    Die Konversionen in Java finde ich trotzdem komisch.

    int a=1, b=2, c;
    c = a + b;    // erlaubt
    
    short a=1, b=2, c,
    c = a + b;    // nicht erlaubt :open_mouth: Was soll das?
    


  • Zeus schrieb:

    Außerdem gibst es eine Array-Class und ein Array-Interface im JDK. Willkommen in der Welt der Mehrdeutigkeit.

    Uff jetzt wird's beschämend. Gut dass die beiden Array Typen wieder nichts mit dem (Unter-Unter-)Thema zu tun haben...

    Sqwan schrieb:

    Lass dich nicht verrückt machen... Ob array oder arraylist nimmt sich nichts...
    [...]

    Du hast Zeus' Punkt nichtmal verstanden. Sein Punkt war, dass er ArrayListen im Steinzeit-Java nicht typisieren kann, natürlich kann ich Arrays typisieren. Und dass Object als Variablen Typ in der Regel ungeeignet ist, hatten wir ja schon geklärt...

    BierzeltOmi schrieb:

    Zeus schrieb:

    Die Notwenigkeit runterzucasten ist schon schlechtes Sprachdesign - von daher lassen wir's lieber 🙂

    Nein, es ist schlechtes Programmdesign



  • kein kenner der antworten schrieb:

    Wie heißt dieses "Phänomen"? Es ist ja sowas ähnliches wie up/downcasting bei Klassen. Oder heißt es hier gar genauso?

    Welches Phänomen?

    Ein float (32bit Gleitkommazahl) kann alle Werte eines 32bit Integer abbilden. Daher kann man in Java implizit einen int-Wert auf Float casten.
    Jedoch kann der Zahlenwert einer Float-Variablen größer als Int.maxValue sein. Daher musst du explizit casten. Aber Vorsicht, es kann zu Verlusten kommen. Das gilt auch in C++.


Anmelden zum Antworten