Я пытаюсь создать Date
как это:
date = new Date(year-1900, mon-1, day, hrs, min, sec);
и Eclipse выдает мне это предупреждение: "Конструктор Date(int, int, int, int, int)
устарел".
Что означает, что конструктор устарел, и что я могу сделать?
Я пытаюсь создать Date
как это:
date = new Date(year-1900, mon-1, day, hrs, min, sec);
и Eclipse выдает мне это предупреждение: "Конструктор Date(int, int, int, int, int)
устарел".
Что означает, что конструктор устарел, и что я могу сделать?
Устаревшее буквально означает отклонение, но более точный перевод будет удален. Устаревший означает, что этот метод по-прежнему можно использовать, но вы не должны его использовать. Он постепенно будет постепенно сокращаться. Существует новый способ сделать то же самое. Устаревшие методы отмечены специальным комментарием Javadoc:
/**
*@deprecated Please now use newMethod()
*@see newMethod()
*/
Использование
Calendar.set(year + 1900, month, date, hrs, min)
или
GregorianCalendar(year + 1900, month, date, hrs, min)
.Как предложено по документации API.
Это означает, что вы не должны использовать его в новом коде. Обычно это так, если сейчас есть лучший способ достижения чего-то, но для обратной совместимости поддерживается старый способ.
Вместо этого, вы можете использовать Calendar
API, так как полное сообщение, мы надеемся, предлагает Вам - или (лучше IMO), вы можете использовать Joda время или java.time
пакет в Java 8 (см учебник). Оба из них намного лучше API даты/времени. к
Когда дело доходит до устаревших API, если сообщение компилятора не предлагает альтернативы, всегда стоит взглянуть на Javadoc - который в этом случае предлагает использовать Calendar.set(...)
.
Это означает, что вы не должны использовать его в новом коде, потому что это опасно или потому, что существует лучшая альтернатива. Компиляторы предупреждают, когда устаревший программный элемент используется или переопределяется в не устаревшем коде.
В вашем случае вы можете использовать java.util.Calendar
вместо java.util.Date
.
Кстати, в Java 8 и более поздних версиях эти старые классы вытесняются новым пакетом java.time (Tutorial). Вдохновленный Joda-Time, определенный JSR 310, и расширен с помощью проекта ThreeTen Extra. Старые классы остаются на месте, и вы можете продолжать их использовать (избегая устаревших частей), но вам предлагается перейти на новые классы.
Устаревшее означает, что это старый или старый способ сделать что-то, и его следует избегать.
В соответствии с этим документом http://java.sun.com/j2se/1.4.2/docs/api/java/util/Date.html используйте Calendar.set(...)
.
Вот фрагмент кода, который поможет вам выполнить миграцию кода. Оба изображения одинаковы.
import java.util.Calendar;
import java.util.Date;
public class Tinker {
public static void main(String[] args) {
int Y = 2015; // Year 2015
int M = 11; // 0..11 -- December
int D = 15; // 15th
int H = 16; // 4:00 PM
int MN = 28; // 4:28 PM
int S = 41; // 4:28:41
Date d = new Date(Y-1900,M,D,H,MN,S);
System.out.println(d);
Calendar c = Calendar.getInstance();
c.set(Y, M, D, H, MN, S);
d = c.getTime();
System.out.println(d);
}
}
Выход:
Tue Dec 15 16:28:41 CST 2015
Tue Dec 15 16:28:41 CST 2015
Поскольку это устаревшее означает, что вы не должны его использовать. Вы можете использовать Календарь для генерации даты из полей.
deprecated означает, что использование этого конструктора не рекомендуется, и оно может быть удалено в будущих версиях Java. Используйте API календаря.
Усталость обычно означает, что вам не рекомендуется использовать эту функцию.
По той или иной причине было решено, что Java будет лучше без него (потому что существует более эффективная альтернатива, и вы должны использовать это вместо этого), и поэтому ее можно удалить из будущей версии Java. Отмена - это в основном предупреждение о том, что "это, вероятно, будет удалено в будущем, хотя мы держим его немного дольше, чтобы дать вам возможность сначала удалить его из вашего кода"
Устаревшие средства основной API и другие java-библиотеки не зависят от него, и он говорит, что у вас есть лучший способ (ы).