» »

Java enum

Java enum

zigaliro ::

Pozdravljeni,
Mene pa zanima če mi lahko nekdo razloži kaj je to Enum v Javi. Kolikor jaz razumem je Enum posebne vrste razred, v katerem lahko napišemo konstante(primer imena dnevov v tednu) in jih kasneje lahko dostopamo do njih.

A mi lahko kdo bolj podrobneje to razloži?

jype ::

To je tip spremenljivke, ki je interno zapisan kot celo število, prevajalnik pa ga omejuje na vnaprej določene vrednosti.

shadeX ::

Enum - Enumeration - kar pomeni štetje, številčenje, itd.

En primer tega je spodnji prikaz kode (napisan v C#). Tukaj uporabnik lahko izbere ali bo imel Zvok na ON, OFF, samo Zvočne efekte, ali samo glasbo.

public enum AudioStatus {

        /// <summary>
        /// Audio is OFF
        /// </summary>
        Off,
        /// <summary>
        /// Audio is ON
        /// </summary>
        On,
        /// <summary>
        /// Effects only
        /// </summary>
        Effects,
        /// <summary>
        /// Music only
        /// </summary>
        Music,    

    }

SimplyMiha ::

Enum je v bistvu oštevilčena etiketa. Imaš več etiket, vsaka je oštevilčena od 0 naprej, na etiketo z markerjem napišeš karkoli ti pade na pamet: Pes, Mačka, Papiga, Osel... Vrednost pa je še vedno številčna, a vsakič ko jo dobiš, na etiketi takoj vidiš, za kaj se gre.

Enum se uporablja za boljšo berljivost in predvsem za "type safety", ki olajša debuganje.

win64 ::

jype je izjavil:

To je tip spremenljivke, ki je interno zapisan kot celo število, prevajalnik pa ga omejuje na vnaprej določene vrednosti.

V c# je zapisan kot integralni tip(byte,short,int), v javi pa je enum vrednost referenca do objekta. Tako, da je to enum samo posebna vrsta razreda.

predi ::

Gre za običajen razred, katerega posebnost je to, da so vsi njegovi konstruktorji končni (final) in privatni (private), njihov rezultat pa se vedno shrani v statične končne spremenljivke, ki so del definicije takšnega razreda. Od zunaj razreda torej ne moreš razširiti preko dedovanja, prav tako ne moreš narediti njegove instance. Poleg tega ima razred vedno nekaj built-in končnih metod, ki olajšajo delo pri osnovni namembnosti takšnih razredov - definiciji konstant in njih uporabi.

Na vrhu telesa razreda je vedno z vejico ločen seznam sledečega (pseudo-ABNF): ime-spremenljivke ( klic-konstruktorja )? ( telo-enum-konstante )?

Mislim, da bi moralo biti iz zgornje notacije jasno vse, razen tistega opcijskega "telo-enum-konstante". Javne metode v enum clasu lahko na tem mestu povoziš s svojo implementacijo, če je to potrebno (v stilu anonimnih notranjih razredov). Nič ni narobe, če ima enum kakšno abstraktno metodo, ki jo na ta način implementira vsaka konstanta posebej.

Javanska implementacija enumov je dokaj specifična. Uporabiš jo lahko tudi za implementacijo singleton programskega vzorca, saj je za vsako konstanto zagotovljena natančno ena instanca enuma. Neposredno je podprt tudi v switch izjavah.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Pošljite nam vašo najboljšo kodo

Oddelek: Programiranje
122175 (1420) AndrejO
»

C# BackgroundWorker Class problem

Oddelek: Programiranje
61257 (1213) hendriks
»

programiranje

Oddelek: Programiranje
413546 (2106) Pegaz
»

[c++] stil kodiranja, informativno

Oddelek: Programiranje
171927 (1743) CCfly
»

[ OOP ] Global vs. Not Global

Oddelek: Programiranje
141238 (1033) noraguta

Več podobnih tem