Când utilizați Java's @Override adnotare și de ce?



Care sunt cele mai bune practici pentru utilizarea Java's `@Override` adnotare și de ce? 


Se pare ca ar fi overkill pentru a marca fiecare suprascrisă metoda cu `@Override` adnotare. Există anumite programare situații care necesită utilizarea `@Override și altele care nu ar trebui să folosi`@Override`?
Utilizați de fiecare dată când suprascrie o metodă pentru două beneficii. Fă-l astfel încât să puteți profita de compilatorul de verificare pentru a face sigur că de fapt sunt imperative o metodă atunci când crezi că ești. În acest fel, dacă ați făcut o greșeală comună de greșeli de scriere o metodă numele sau nu se potrivesc în mod corect parametrii, veți fi avertizat că metoda nu suprascrie pe cum crezi. În al doilea rând, ea face codul mai ușor de înțeles, pentru că este mult mai evident atunci când metodele sunt suprascrise.


În plus, în Java 1.6 puteți să-l utilizați pentru a marca atunci când o metodă implementează o interfață pentru aceleași beneficii. Cred că ar fi mai bine să aibă o separa de adnotare (ca `@Implementează`), dar'e mai bine decât nimic.
my 2 cents:

când implementezi un api nu mi se pare logic să “ghicești” ce fel de date primești pe baza inputului primit. de obicei modul de encodare a datelor îl determini folosind una din metodele de mai jos:

trimițând un http header când faci requestul (clientul api-ului) - considerat best prac… faza cu overclocking-ul e ca atunci cand ii este crescut voltajul ii creste si viteza de procesare. insa dezavantajul oc-ului este ca trebuie sa ai un sistem de racire bun. pentru ca overclockingul asa cum ii spune si denumirea, inseamna cresterea performantelor peste limita normala. asta aduce cresterea temperaturilor si a gradului de uzura al componentelor.
recomandat e sa faci overclock pe perioade scurte de timp. si nu ca metoda permanenta pentru imbunatatirea performantelor Mă aștept răspunsul real este pur și simplu: nu a fost un bun exemplu de utilizare. Pentru cazuri, avantajul este acela că permite o fluente API asupra tipurilor existente (care nu se furnizează logica) - și anume



```
var foo = data.Where(x=>x.IsActive).OrderBy(x=>x.Price).First();

```

care permite LINQ:



```
var foo = (from x in data
           where x.IsActive
           order by x.Price
           select x).First();

```

Cu metode statice, acest lucru pur și simplu nu este o problemă, astfel încât nu există nici o justificare; doar utiliza metoda statică pe al doilea tip.


Așa cum este, metodele de extensie nu sunt *corect* obiect orientate - ele sunt un abuz pragmatic pentru a face viața mai ușoară în detrimentul purității. Nu a fost nici un motiv pentru a dilua metode statice în același mod. „Expressive“ înseamnă că este ușor de a scrie cod care este ușor de înțeles, atât pentru compilator și pentru un cititor uman.


Doi factori care fac pentru expresivitate:


* constructe intuitiv care pot fi citite
* lipsa de cod boilerplate


Comparați acest expresiv Groovy, cu eqivalent Java mai puțin expresiv:



```
3.times {
   println 'Hip hip hooray'
}

```

vs



```
for(int i=0; i<3; i++) {
    System.out.println("Hip hip hooray");
}

```

Uneori tranzactionati de precizie pentru expresivitate - exemplul Groovy funcționează pentru că se presupune lucruri pe care Java face să specificați în mod explicit. la majoritatea extensiilor (excepție .ro) se aplică verificarea căsuței de e-mail, însă acest lucru nu reprezintă o regulă de bază. ulterior înregistrării unui domeniu, este indicată verificarea căsuței de email pentru a verifica dacă extensia achiziționată necesită verificări suplimentare. ca să scrii deva de calitate, ai nevoie de inspirație și aia nu vine la comandă.
când ai ceva idei, iei pixu' și te-apuci de treabă. dar nu încerca să scoți când n-ai de unde. 
postez răspunsul ăsta pentru a doua oară, de ce vreți să scrieți când nu știți ce? dacă-ți dau acum o idee, ai două variante: ori o dezvolți până la punctul la care iar, nu mai știi ce să scrii -pentru că s-a născut în mintea mea și alta nu e capabilă să o facă așa cum aș face-o eu- ori o dezvolți mai departe, acea idee devenind creația ta pentru că practic bagi cuvinte de la tine putere. 
am obosit. am văzut și eu, de azi, la unele aplicații (eu nu mă refer la jocuri, fiindcă nu am in telefon), imi cer "repornire", pe urmă se solicită "închidere aplicatie". să știi că și eu am dat restart la telefon. dar, probabil sunt niște probleme tehnice, pe undeva. dar nu in telefoanele noastre. pentru ca nu spui pentru ce varsta, vezi astea:
https://play.google.com/store/apps/details?id=net.ejuk.funabc
sau
http://alexandrunegrea.ro/2013/09/18/10-aplicatii-android-gratuite-pentru-parinti-si-copii.html
si
https://play.google.com/store/apps/details?id=ro.gamara.nameandmatch.brainkidz&hl=ro
si
https://play.google.com/store/apps/details?id=ro.gamara.abc\_alphabetandwritinglearningforkidz.writemyname&hl=ro
(copiezi link-urile in browser) Problema nu e de corectitudine. Expresia e menționată în așa multe dicționare, uneori cu exemple din literatură, încît nu se pune în discuție dacă e corectă sau nu.  

  

Ea îi deranjează pe mulți vorbitori pentru că e rară și ca urmare sensul ei e insuficient de clar. Unele dicționare spun că e regionalism, dar nu precizează regiunea – un defect frecvent al dicționarelor românești.  

  

Ca urmare sfatul meu legat de această expresie – și de oricare alta care nu face parte din limba comună – este ca ea să fie folosită numai atunci cînd știm sigur că interlocutorul o înțelege. Cînd scriem pentru multă lume, de exemplu în presă, e bine s-o înlocuim cu expresii cunoscute de toți. Există destule. pentru web design trebuie sa stii asa:
html, css, javascript, php si/sau asp minim.
la fel ar fi o idee buna sa intelegi document object model (dom).

gasesti multe tutoriale dar unul minimal ar fi aici:
www.w3schools.com

pentru aplicatii android trebuie sa stii in primul rand java. (android studio e cel mai folosit acum pentru ca e un ide ce cuprinde cam tot ce ai nevoie).

la partea de hard trebuie sa faci ceva practica (adica sa desfaci un calc sa intelegi ce e pe acolo si cu siguranta gasesti tutoriale).
la teorie aici e mult de invatat si nu poti invata in cateva luni.