Traducerea modalităților de comparare a obiectelor date în java, stokito pe software

Rezumat din traducător

Deci, să schițăm problema - compararea obiectelor Date în sursa cunoscută de erori Java.
Apare în codul standard, dar se întâmplă și în codul de testare, unde trebuie să creăm în mod regulat obiecte Date care marchează un anumit punct în timp, la care vom face referire în comparație.

În codul de testare, nu am experimentat că folosesc metode depreciate. Așadar, am folosit vechiul constructor Date pentru a inițializa datele, după care le-am comparat cu alte obiecte date prin metoda de comparare equals ():

Metoda canonică

Începând cu Java 1.1, Java API a fost adăugat cu clasa Calendar pentru a separa punctul în timp (adică data) de reprezentarea sa într-un anumit director (calendar). Următorul fragment este modul de a obține același rezultat ca mai sus.

Acest lucru nu este doar un cuvânt, ci și o greșeală: orele, minutele și restul nu sunt zero (este luat din momentul în care calendarul a fost creat direct), astfel încât compararea cu egal () va reveni false. Aici este codul corect:

Cel puțin acest lucru înrăutățește coerența lui 😉

Apache Commons Lang

Apache Commons oferă inițial diferite biblioteci de utilități care facilitează dezvoltarea în Java. Una dintre aceste biblioteci este Apache Commons Lang, care oferă o funcție care merită să facă parte din Java API. În cazul nostru, clasa DateUtils ne va permite să scurtăm codul, păstrând în același timp lizibilitatea acestuia:

Chiar mai bine, DateUtils ne permite să lucrăm direct cu obiectele Date într-o formă alternativă:

Rețineți că aceasta lasă parametrii intacți, atingând imutabilitatea prin principiul programării funcționale.
Avantaje: folosim standardul Java API.
Dezavantaje: da, nu. Și totuși, DSL complet original nu pare mai adecvat?

Ultima opțiune este utilizarea bibliotecii Joda Time. care își propune să devină un înlocuitor al Datei și Calendarului. De asemenea, a dat naștere unui JSR-310, un API nou și îmbunătățit pentru manipularea datei și a orei care ar trebui să devină parte a Java 8 (planificată inițial pentru Java 7). Timpul Joda ar trebui să consacre un articol separat (sau chiar un mini-ghid). Pentru nevoile noastre actuale, următorul fragment de cod poate înlocui în mod avantajos codul nostru original:

Dacă se compară cu primul exemplu, un astfel de cod pare mai curat și mai concis. Și totuși, parametrii sunt descriși de sine, nu este nevoie să verificați în mod regulat JavaDocs pentru a afla cum este inițializat anul. În plus, semantica numelor claselor este clară. În cele din urmă, metoda toDate () ne oferă o punte la standardul Java API.

concluzie

Concluzie face-te. Personal, eu folosesc de obicei Apache Commons Lang, dar în ultima vreme m-am aplecat spre Joda Time. Arhiva cu cod eșantion este disponibilă aici pentru descărcare ca proiect Maven în Eclipse.