Конструктор Date (...) устарел. Что это значит? (Ява)
Я пытаюсь создать Date
как это:
date = new Date(year-1900, mon-1, day, hrs, min, sec);
и Eclipse выдает мне это предупреждение: "Конструктор Date(int, int, int, int, int)
устарел".
Что означает, что конструктор устарел, и что я могу сделать?
Ответы
Ответ 1
Устаревшее буквально означает отклонение, но более точный перевод будет удален. Устаревший означает, что этот метод по-прежнему можно использовать, но вы не должны его использовать. Он постепенно будет постепенно сокращаться. Существует новый способ сделать то же самое. Устаревшие методы отмечены специальным комментарием Javadoc:
/**
*@deprecated Please now use newMethod()
*@see newMethod()
*/
Использование
-
Calendar.set(year + 1900, month, date, hrs, min)
или
-
GregorianCalendar(year + 1900, month, date, hrs, min)
.
Как предложено по документации API.
Ответ 2
Это означает, что вы не должны использовать его в новом коде. Обычно это так, если сейчас есть лучший способ достижения чего-то, но для обратной совместимости поддерживается старый способ.
Вместо этого, вы можете использовать Calendar
API, так как полное сообщение, мы надеемся, предлагает Вам - или (лучше IMO), вы можете использовать Joda время или java.time
пакет в Java 8 (см учебник). Оба из них намного лучше API даты/времени. к
Когда дело доходит до устаревших API, если сообщение компилятора не предлагает альтернативы, всегда стоит взглянуть на Javadoc - который в этом случае предлагает использовать Calendar.set(...)
.
Ответ 3
Это означает, что вы не должны использовать его в новом коде, потому что это опасно или потому, что существует лучшая альтернатива. Компиляторы предупреждают, когда устаревший программный элемент используется или переопределяется в не устаревшем коде.
В вашем случае вы можете использовать java.util.Calendar
вместо java.util.Date
.
Кстати, в Java 8 и более поздних версиях эти старые классы вытесняются новым пакетом java.time (Tutorial). Вдохновленный Joda-Time, определенный JSR 310, и расширен с помощью проекта ThreeTen Extra. Старые классы остаются на месте, и вы можете продолжать их использовать (избегая устаревших частей), но вам предлагается перейти на новые классы.
Ответ 4
Устаревшее означает, что это старый или старый способ сделать что-то, и его следует избегать.
В соответствии с этим документом http://java.sun.com/j2se/1.4.2/docs/api/java/util/Date.html используйте Calendar.set(...)
.
Ответ 5
Вот фрагмент кода, который поможет вам выполнить миграцию кода. Оба изображения одинаковы.
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
Ответ 6
Поскольку это устаревшее означает, что вы не должны его использовать. Вы можете использовать Календарь для генерации даты из полей.
Ответ 7
deprecated означает, что использование этого конструктора не рекомендуется, и оно может быть удалено в будущих версиях Java. Используйте API календаря.
Ответ 8
Усталость обычно означает, что вам не рекомендуется использовать эту функцию.
По той или иной причине было решено, что Java будет лучше без него (потому что существует более эффективная альтернатива, и вы должны использовать это вместо этого), и поэтому ее можно удалить из будущей версии Java. Отмена - это в основном предупреждение о том, что "это, вероятно, будет удалено в будущем, хотя мы держим его немного дольше, чтобы дать вам возможность сначала удалить его из вашего кода"
Ответ 9
Устаревшие средства основной API и другие java-библиотеки не зависят от него, и он говорит, что у вас есть лучший способ (ы).