Hirdetés

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

  • loszerafin
    senior tag

    Szia!

    A static import viszonylag új dolog a Java-ban az 1.5-től kezdve jött képbe.

    A hagyományos import arra jó, hogy a package név kiirása nélkül hivatkozhass
    osztályokra. Ha például azt írod, hogy

    import java.util.HashMap;

    akkor a kódban simán HashMap-ként hivatkozhatsz a java.util.HashMap osztályra.
    Az import java.lang.Math.*; értelmetlen, mivel az osztályon belüli dolgokat
    nem lehet beimportálni a sima importtal.

    A Math osztályra egyébként már eleve hivatkozhatsz rövid névvel, mivel az a java.lang package-ben van. Ez az egyetlen package amit soha nem kell beimportálni, mert mindig alapból be van importálva.
    Az ''régi'' import esetén tehát a package név elhagyható, de nem
    az osztálynév! Java 1.5 előtt tehát a PI konstansra úgy tudtál hivatkozni, hogy
    Math.PI

    Itt jön be a statikus import a képbe, mivel pont arra találták ki, hogy statikus
    változók használatakor ne kelljen beirni az osztály nevét sem.
    Ha tehát azt mondod, hogy
    import static java.lang.Math.PI;
    akkor attól kezdve sima PI-t irhatsz a kódban.

    Az interfészek, osztályok importja között nincs különbség.


    [Szerkesztve]

    Szia

    Köszönöm a kimerítő választ, azt hiszem, megértettem.
    Ráadásul a válaszod olvasása közben a csomag/osztály viszony is világosabb lett.

    Választottam egy másik osztályt, amit nem importál be a java fordító automatikusan, hogy jobban átlássam a dolgot.

    Pl. java.math.BigDecimal osztály.

    Az import java.math.BigDecimal;

    beírásával a nem-statikus metódusokat a metódus nevének a leírásával használhatom,
    a statikus metódusokat/mezőket pedig a ''BigDecimal.''
    beírásával a metódus/mező neve előtt használhatom.


    Ha ezt is ( a BigDecimal. beírását) el akarom kerülni, akkor :
    import static java.math.BigDecimal.*;

    ami után az összes statikus mezőt/metódust a BigDecimal eléírása nélkül használhatok,

    vagy
    import static java.math.BigDecimal.ONE;
    ha a ONE statikus mezőt akarom használni,

    vagy

    import static java.math.BigDecimal,valueOf;
    ha a valueOf() metódust akarom használni.

    Világos minden az import használata körül, még 1x köszönöm.
    KL

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