ПредишенСледващото

Резюме от преводача

Така че, нека да очертае проблема - сравнение Дата обекти в Java известен източник на грешка.
Тя се появява в стандартен код, но това също се случва в кода за тестване, където редовно трябва да се създаде Дата обекти, които бележат в момент, в който ние трябва да се отнасят по-късно в сравнение.

В кода на тестване, аз не се тревожи, че използването на остарели (отхвърлени) методи. Така че аз използвах един стар Дата конструктор за инициализиране на датата, и след това да ги сравните с други обекти чрез дата е равна на () метод за сравнение:

В каноничен начин да

Започвайки с Java 1.1 в API Java е добавен към класа на календара да споделят момент във времето (т.е. дата) на представителството си в определена директория (календар). Следният код фрагмент (фрагмент) е начин за получаване на същия резултат, както по-горе.

Това не е просто един скучен, тук също има грешка: часове, минути, а останалата част не е равно на нула (времето, взети от пряк създаването на календара), така че сравненията между равенство () ще върне фалшиви. Тук е правилния код:

Най-малко това влошава краткост 😉

Apache Commons Lang

Apache Commons първоначално utilitnye предоставя различни библиотеки, които улесняват развитието на Java. Една такава библиотека Apache Commons Ланг, който предоставя функционалност, която заслужава да бъде част от API Java. В нашия случай DateUtils клас ще ни позволи да се намали кода като запазват четливостта:

Дори по-добре, DateUtils ни позволява да работите директно с него Дата обект в тази алтернативна форма:

Моля, имайте предвид, че не оставя непокътнати параметрите, достигайки неизменност (неизменност) принципни функционално програмиране.
Предимства: Ние използваме стандартната Java API.
Недостатъци: да не. И все пак, няма ли да е вид пълен DSL изглежда нещо по-подходящо?

Последният вариант е да се използва библиотеката Joda Time. която има за цел да се превърне в заместител на датата и календар. Той също така зареди JSR-310 - нова и подобрена API за манипулиране на дата и час, което трябва да стане част от Java 8 (първоначално беше планирано за Java 7). Йода Време е на стойност отделна статия (или дори мини-водач). За нашите настоящи нужди следните програмка може да бъде изгодно да се замени първоначалното ни:

В сравнение с първия пример, следния код се появява по-чист и по-кратки. И все пак, параметрите на самоописващи, няма реална нужда да се проверява редовно, за да се види как JavaDocs инициализират година. В допълнение, семантиката на имената на класовете ясно. И накрая, забременяване, () метод ни дава мост към стандартната Java API.

заключение

Начертайте си направите изводите. Лично аз обикновено използват Apache Commons Ланг, но през последните години са склонни да Joda Time. Архив с примерен код на разположение за изтегляне тук като проект Maven под Eclipse.

Подкрепете проекта - споделете линка, благодаря!