it-roy-ru.com

Конструктор Date (...) устарел. Что это значит? (Джава)

Я пытаюсь создать дату как это:

date = new Date(year-1900,mon-1,day,hrs,min,sec);

и Eclips дает мне это предупреждение: «Конструктор Date (int, int, int, int, int) устарел».

Что значит для конструктора быть устаревшим? Что я могу сделать?

38
snakile

Устаревшее буквально означает отклонено, но более точный перевод будет удален. Устаревший означает, что этот метод еще можно использовать, но вы не должны его использовать. Это будет постепенно прекращено. Есть новый метод, чтобы сделать то же самое. Устаревшие методы помечаются специальным комментарием Javadoc:

/**
 *@deprecated Please now use newMethod()
 *@see newMethod()
 */

Используйте:

  • Calendar.set(year + 1900, month, date, hrs, min) 

или же

  • GregorianCalendar(year + 1900, month, date, hrs, min).

Как предлагается в документации API .

39
JuanZe

Это означает, что вы не должны использовать его в новом коде. Обычно это так, если теперь есть лучший способ достижения чего-то, но старый метод поддерживается для обратной совместимости.

Вместо этого вы могли бы использовать API Calendar, поскольку, как мы надеемся, полное сообщение подсказывает вам - или (лучше IMO) вы можете использовать Joda Time или пакет Java.time в Java 8 (см. учебное пособие ). Оба из них являются far превосходными API даты/времени. к 

Когда дело доходит до устаревших API, если в сообщении компилятора нет альтернативы, всегда стоит взглянуть на Javadoc - который в этом случае предлагает использовать Calendar.set(...).

16
Jon Skeet

Это означает, что вы не должны использовать его в новом коде, как правило, потому что это опасно или потому что существует лучшая альтернатива. Компиляторы предупреждают, когда устаревший программный элемент используется или переопределяется в устаревшем коде.

В вашем случае вы можете использовать класс Java.util.Calendar вместо Java.util.Date .

Кстати, в Java 8 и более поздних версиях эти старые классы заменяются новым пакетом Java.time ( Tutorial ). Вдохновлено Joda-Time , определено JSR 310 и расширено проектом ThreeTen Extra . Старые классы остаются на месте, и вы можете продолжать использовать их (избегая их устаревших частей), но вам предлагается перейти на новые классы.

5
missingfaktor

Устаревшее означает, что это устаревший или старый способ сделать что-то, и его следует избегать.

Согласно этому документу http://Java.Sun.com/j2se/1.4.2/docs/api/Java/util/Date.html , используйте Calendar.set(...).

4
Daniel A. White

Вот фрагмент кода, который поможет с переносом кода. Оба отпечатка одинаковы.

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
3
ChrisCantrell

Поскольку это устарело, это означает, что вы не должны его использовать. Вместо этого вы можете использовать Календарь для создания даты из полей.

2
Paul McKenzie

устарел означает, что использование этого конструктора не рекомендуется, и он может быть удален в будущих выпусках Java. Используйте Календарь API.

1
EJB

Устаревшее обычно означает, что вам не рекомендуется использовать эту функцию.

По той или иной причине было решено, что Java будет лучше без нее (потому что существует лучшая альтернатива, и вы должны использовать ее вместо этого), и поэтому она может будет удалена из будущей версии Java. Устаревание по сути является предупреждением о том, что «это, вероятно, будет удалено в будущем, хотя мы держим его чуть дольше, чтобы дать вам возможность сначала удалить его из кода».

0
jalf

Устаревшие средства Ядро API и другие библиотеки Java не зависят от этого и говорят, что у вас есть лучшие способы.

0
Premraj