Keresés

Új hozzászólás Aktív témák

  • thon73

    tag

    válasz thon73 #6986 üzenetére

    Bocsánat, hogy magamnak válaszolok, de időközben végül egy próbaprogrammal megfejtettem:

    Object longobject = 0x0102030405060708L;

    long longprimitive = (long)longobject;

    // char charprimitive = (char)longobject; -> exception
    // int intprimitive = (int)longobject; -> exception

    char charprimitive = (char)(long)longobject;
    int intprimitive = (int)(long)longobject;

    // Character charobject = (Character)longobject; -> exception
    // Integer intobject = (Integer)longobject; -> exception

    Character charobject = Character.valueOf( (char)((Long)longobject).longValue() );
    // (char)(long)longobject;
    Integer intobject = (int)(long)longobject;

    Végülis logikus: a wrapper osztályok (szinte) kizárólag a saját primitivjükkel átjárhatóak (boxing). És csak a primitivek alakíthatóak egymásba (casting), a nem öröklési viszonyban álló objectek nem. (Bár a Long-Object átalakítás szintén casting, ha mindent jól értettem.)

    Gondolom, ez itt sokaknak nagyon alap szint; de én azért jól megszenvedtem vele, mire kiolvastam a tudományból, hogy pontosan mi is kell ide meg hogyan működik...

Új hozzászólás Aktív témák