Hirdetés

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

  • M_AND_Ms
    veterán

    data[] == "bor" nem jó. Helyette "bor".equals(data[0])

    Java-ban a Stringeket equals-sal hasonlítunk össze, nem ==.

    if("bor".equals(data[0]){
    Bor b = new Bor(data[1],data[2],data[3]);
    System.out.println("valami");
    italok.add(b);
    }
    else if("gyumolcsle".equals(data[0])){
    Gyumolcsle gy = new Gyumolcsle(data[1],data[2],data[3]);
    italok.add(gy);
    }
    else if("borso".equals(data[0])){
    FalraHanytBorso fhb = new FalraHanytBorso(data[1],data[2]);
    italok.add(fhb);
    }
    else{
    //System.out.println("Ilyen nincs.");
    }

    Még valami.
    Azért megy előre a konstans string, mert ha a data[0] esetleg null, akkor szétszáll a pichába az egész.

    "Java-ban a Stringeket equals-sal hasonlítunk össze, nem ==."

    Ez kicsit sántít ill. félrevezető.

    Java-ban a == -nal nem a két objektumot hasonlítjuk össze, hanem a két referenciát. Vagyis akkor kapunk igazat ha mindkettő ugyanarra az objektumpéldányra mutat.
    Az equals-nél pedig meghívjuk az adott objektumpéldány equals függvényét, ami az objektumra jellemző összehasonlítást végzi és megmondja, hogy a paraméterként megadott másik objektumpéldányt azonosnak tekintjük-e, vagy sem. Ebben az equals-ben lehet megírni az objektumra jellemző logikát, ami az azonosságot kimondja. String-nél természetesen ezt már megírták és akkor mondja azonosnak, ha pontosan ugyanaz a a karakterliterál van mindkét String példányban.
    De pl. írhatok az Alma osztályomba egy saját equals függvényt, ami az én logikám szerint akkor ad igazat ha a méret, a szín és a súly tulajdonságai megegyeznek a két összehasonlítandó Alma osztályból létrehozott példánynál

    Tehát, NEM CSAK Stringnél kell az equals a == helyett az azonosság eldöntésére, hanem minden osztály példányánál.

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