EneR: (String) b = a;

Hallo,
Ich möchte eine Int in eine String schreiben. Folgendes Funkioniert nicht (unexpected type). Habe ich irgendwas Falsch gemacht?
1. Versuch:
Int a;
String a2;
(String) a2 = a;
2. Versuch:
Int a;
String a2;
(String) a2 = (Int) a;

  1. Hi,

    Int a;
    String a2;
    (String) a2 = a;

    a2 ist bereits ein String. a nicht.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo,

      a2 ist bereits ein String. a nicht.

      Danke für die Antwort, aber:
      a2 = (int) a;
      funktioniert auch nicht oder worauf möchtest Du hinaus?

      1. Hi,

        a2 ist bereits ein String. a nicht.
        Danke für die Antwort, aber:
        a2 = (int) a;
        funktioniert auch nicht oder worauf möchtest Du hinaus?

        a ist bereits ein int. Ich dachte, Du möchtest einen String daraus machen?

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
      2. Hallo Forum,

        a2 ist bereits ein String. a nicht.
        Danke für die Antwort, aber:
        a2 = (int) a;
        funktioniert auch nicht oder worauf möchtest Du hinaus?
        a ist bereits ein int.

        Du möchtest einen TypeCast durchführen, schau nochmals in der Dokumentation nach wie genau das funktioniert. (Hint: Du möchtest a zu einem String casten)

        Grüsse
        Siramon,
             ja der Penner aus Nr. 14

  2. Hallo EneR,

    Was Cheatah meint, ist, dass Du a2 = (String) a schreiben müsstest, um zu einem String zu casten.
    Das wird allerdings auch nicht funktionieren.
    Ich nehme an dass Dein Int den Typ int (klein) meint, und es sich nicht um eine eigene Klasse handelt.

    Der cast-operator "(type) <expression>" hat zwei verschiedene Semantiken je nach dem ob es sich um Referenz-Typen oder native Typen handelt.
    Bei nativen Typen, also z.B. sowas:
    long l = 1; int i = (int) l;
    findet eine Typumwandlung statt. Das "(int) l" gibt an, dass vom Typ long nach int konvertiert wird. Dabei ändert sich wirklich etwas an den Daten, evtl geht sogar Information verloren.
    Bei Referenz-Typen, z.B.:
    Object obj = new ArrayList(); Collection collection = (List) obj;
    wird gar nichts umgewandelt. Es handelt sich lediglich um einen Hinweis an den Compiler, dass er an dieser Stelle einen bestimmten Typ erwarten kann.
    In diesem Fall bekommt er den Hinweis, dass in obj ein Objekt liegt, dass zum Typ List passt (weil es das Interface implementiert).
    Zwischen Objekten kann niemals umgewandelt werden, wenn da vorher in obj irgend etwas anderes gespeichert worden wäre als eine Liste würde an der Stelle ein Laufzeitfehler entstehen.
    Die Zuweisung an collection funktioniert dann, weil List von Collection abgeleitet ist. Ich habe da nicht List hingeschrieben, um zu zeigen, dass da nicht der gleiche sondern lediglich ein kompatibler Typ stehen muss.

    String ist in Java eine normale Klasse, damit ist also eine Konvertierung per Type-Cast nicht möglich. Du müsstest so etwas schreiben:
    int i = 123; String s = Integer.toString(i);

    Grüße

    Daniel