Constantele, enumurile și importurile statice sunt în java, stokito pe software

O constantă este, aproximativ vorbind, o variabilă a cărei valoare nu se modifică în timp ce programul se execută. Un exemplu clasic al unei constante este numărul Pi (3.14 ...). Constantele sunt folosite pentru a combate numerele magice. și anume nu este clar ce semnifică numere sau șiruri de caractere.







Dar există modificatori finali mai flexibili:

În acest exemplu, variabila finală cu numele PI a fost declarată și a fost imediat setată la 3.14. Variabilele finale pot fi setate o singură dată și nu mai pot fi modificate. Orice încercare de modificare a valorii variabilei finale (sau a câmpului) pe care compilatorul o va percepe ca o eroare, adică toate, precum și cu constante.

Diferența dintre variabila finală și cea constantă este aceea că inițializarea poate fi amânată:

Această inițializare întârziată, de exemplu, este adesea folosită pentru a crea obiecte imuabile.

Deci, constantele sunt de obicei numite campuri publice, statice, finale și imediat inițializate:

Câmpul static (modificatorul static) aparține clasei și nu aveți nevoie să creați o instanță specifică a obiectului pentru ao accesa:

Rețineți că, în Java, ca C, realizate în toate aceste limbi nume constante pentru a scrie BOLSHIMI_BUKVAMI_RAZDELYAYA_IH_PODCHORKIVANIEM.

Aici este de remarcat faptul că o astfel de constantă nu poate fi doar un număr, ci o expresie cu valoare maximă, în care se poate accesa și alte câmpuri statice sau se pot apela metode statice:

În acest caz, totul este evaluat la momentul compilarii si nu este nevoie de a înlocui 60 * 60 * 24 la mai puțin ușor de citit și evident deja calculat dvs. 86400 (în afară probabil calculat incorect).

Gruparea constantelor prin enumuri

Foarte adesea constantele sunt folosite în mai multe clase și doresc să le păstreze pe toate într-un singur modul. În Java, OOP este forțat, deci tot trebuie să declarați o clasă fără metode și să puneți toate constantele în ea. De exemplu, clasa constantă pentru modificatorii de elemente Java:

În acest exemplu, este ușor de văzut că constantele sale sunt de același tip și lista lor limitată; Nu mai există modificatori în Java. Iată câteva dintre problemele acestei clase:

  • Tip nesigur: în metoda în care doriți să transferați valoarea enumerării, puteți trece orice număr, nu doar valorile de la 1 la 11;
  • Non-informative: de exemplu, atunci când depanare, valoarea 3 nu ne va spune nimic. Și aș vrea să văd PRIVAT;
  • Expunerea la erori: de exemplu, atunci când adăugați un element nou sau modificați succesiunea celor existente. De exemplu, nu puteți urma, iar în PUBLIC și PROTECTED puneți aceeași valoare de 1. De exemplu. Nu există niciun control asupra părții compilatorului ca și pentru unicitatea valorilor constantelor și pentru posibilitatea de alocare aleatorie a variabilelor la valori care nu corespund niciuneia dintre aceste constante.

Astfel de constante grupate se numesc enums, iar in Java pentru ele exista un construct enum special.

Rescriem această clasă ca o enumerare:







Și îl puteți folosi ca o constantă obișnuită:

Rețineți că enumerarea nu trebuie comparată prin egal, este suficient doar pentru a compara prin referință:

În general, trebuie remarcat faptul că înainte de cea de-a cincea versiune Java nu existau enumerări, în loc de ele s-au folosit clase cu constante statice. Acest lucru spun că multe dintre clasele pe care le veți întâlni au rămas scrise în modul "bunicului". În clasele standard nu au fost schimbate, de exemplu java.awt.Color.

Din punct de vedere tehnic, enumerările sunt o clasă completă care moștenește de la java.lang.Enum. și anume Modificatorul enum public public este echivalent cu clasa abstractă Modificatorul extinde java.lang.Enum.

Și dacă aceasta este o clasă, atunci puteți adăuga un număr arbitrar de câmpuri și metode pentru aceasta:

Când executați acest exemplu, rezultatul va fi tipărit public și nu 1. Fiecare enum are un câmp de nume cu numele său (în cazul nostru PUBLIC). Am redefinit (@Override) metoda toString () în interiorul căreia îi dăm numele litere mici.

Acest lucru este valabil în special loviturile creierului celor care au programate anterior în alte limbaje de programare, în care transferurile sunt grupate în esență, constante întregi convenționale, adică, tipuri de valoare (conțin valori în mod direct, iar atunci când atribuirea unor valori variabile la altul de același tip creează o copie a valorii atribuite, spre deosebire de o variabilă de tip referință, a cărui copiat atunci când atribuirea de referințe la obiecte, dar nu și obiectele în sine).

Trebuie remarcat faptul că, deși mai mult aceste clase, cum ar fi ca nu finală (adică declarată finală fără modificator și îl puteți moșteni), pentru a extinde în continuare clasa noastră nu putem - interdicția este pusă în aplicare la nivel compilator.

Utilizând importul static

Enumerările nu sunt potrivite pentru toate cazurile. De exemplu, constanta logaritmului natural e și constanta π nu pot fi combinate într-o enumerare. Să ne uităm la clasa care conține această constantă:

Toate domeniile sale sunt publice statice finale. Pentru a nu scrie acești modificatori de fiecare dată, mulți programatori declară constante în interfață. deoarece toate domeniile sale sunt deja publice statice finale.

Apoi cineva a avut o idee: "De ce ar trebui să scriu de fiecare dată numele complet al interfeței cu constantele, dacă pot să o fac și să le acces direct?" Și astfel de construcții

transformat într-un astfel de coșmar

Structura de import statică permite accesul direct la membrii statici fără a fi nevoie de moștenire de la tipul care conține acești membri statici. În schimb, programul importă membrii în mod individual:

sau toate cele de mai jos:

Odată ce un membru static importat poate fi utilizat fără a specifica numele clasei:

Deci, când ar trebui să utilizați importul static? Numai în unele cazuri! Utilizați-l numai dacă sunteți forțat să declarați copii locale ale constantelor sau dacă folosiți moștenirea incorect. Cu alte cuvinte, utilizarea sa este justificată atunci când este necesar să se folosească în mod constant membri statici ai unei clase de la una sau două alte clase.

Importarea tuturor metodelor statice dintr-o clasă poate fi parțial dăunătoare citirii; Dacă aveți nevoie de una sau două metode, importați-le separat. Imbunatatirea imbunatatita imbunatatita imbunatateste vizibilitatea programului dumneavoastra, excluzand codurile programului nnnoe repetand numele de clasa.

Cum de a declara corect o clasă constantă?

Dacă toate acestea sunt foarte necesare, atunci declarați clasa constantă ca fiind o clasă normală, nu o interfață. Doar faceți-o și finală (finală), astfel încât să nu poată fi moștenită de la ea. Și ar fi frumos să o facem abstractă, astfel încât să nu-i puteți crea instanța, deoarece toate constantele sunt statice și ne referim la câmpurile clasei a obiectului.

concluzie

După cum puteți vedea, există diferite nuanțe ale utilizării constante în Java, care nu sunt întotdeauna evidente pentru începători. fire Din păcate, nu au fost încă sfințite de constante inline, ne-ar dori să scrie mai multe despre seturile de simulare operație prin adăugarea + arată cum să creați o colecție constantă (care voi discuta într-un articol separat).

Nu fiți leneși și citiți câteva articole foarte importante despre programatori, studenți și juniori începători.
De asemenea, nu uitați să vă alăturați grupului IT Juniors unde încerc să colectez legături cu alte articole utile pentru dvs. și anunțuri de cursuri și stagii în companii.







Articole similare

Trimiteți-le prietenilor: