2010-02-22 11 views
6

Przeprowadzam migrację z Java 1.1. w języku Java 5.Migracja do wersji Java przestarzała Data method

Zauważyłem, że niektóre metody zostały wycofane, np. java.util.Date ma metodę getYear(), która jest przestarzała.

Moje pytanie brzmi, czy metoda getYear() pozostało jak jest w 1.1 będą nadal funkcjonować w Javie 5

Odpowiedz

4

Tak, po prostu zadziała tak jak dawniej. Można go usunąć tylko w przyszłych wersjach Java SE. Ta deprecjacja jest czysto dokumentalna i po prostu daje ci możliwość aktualizacji kodu w międzyczasie.

Obecnie należy używać jednej z metod: java.util.Calendar lub znacznie ulepszonej JodaTime API. Zastąpienie interfejsu API daty/czasu w standardowej Java SE będzie podobne do JodaTime i nadal ma nadejść (JSR-310). Zostało to zaplanowane dla JDK7, ale niestety nie wydaje się być na czas.

+1

Wygląda na to, że JSR-310 może nadal tworzyć JDK7: http://www.jroller.com/scolebourne/entry/new_job_impact_on_jsr – ColinD

+0

To całkiem nowy wpis na blogu, o którym nie wiedziałem. Dzięki za udostępnienie! – BalusC

4

Będzie nadal funkcja, mimo że jest przestarzała. Zastąpili go "lepszym" (Calendar.get (Calendar.MONTH).), Ale oryginał pozostawiono tam w celu kompatybilności wstecznej. Więc nie ma problemu, aby go użyć w twoim przypadku.

2

Będzie działać, ale nie jest to zły pomysł, aby zacząć myśleć o alternatywach.

getYear został wycofany z konkretnego powodu; rok związany z datą zależy od lokalizacji i jako taki został przeniesiony do klasy kalendarza. Ta przebudowa klasy Date, która wyodrębnia zależność Locale od samych danych, jest czymś, co można również zobaczyć w innej funkcji związanej z datą/kalendarzem. Jako takie, może być mądrze przenieść się do Kalendarzy, gdzie jest to właściwe.

Powiedziałem, że nie będę dotykał daktyli/kalendarzy java kijem, wolę takie rzeczy jak Apache Commons Lang i inne, aby poradzić sobie z większością rzeczy związanych z datą/czasem. Słyszałem również, że Yoda jest popularny w tym względzie.