web-dev-qa-db-fra.com

Le constructeur Date (...) est obsolète. Qu'est-ce que ça veut dire? (Java)

J'essaie de créer une date comme celle-ci:

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

et Eclips me donne cet avertissement: "Le constructeur Date (int, int, int, int, int) est obsolète".

Qu'est-ce que cela signifie pour un constructeur d'être obsolète? Que puis-je faire?

38
snakile

Cela signifie que vous ne devriez pas l'utiliser dans le nouveau code, généralement parce que c'est dangereux ou qu'il existe une meilleure alternative. Les compilateurs avertissent lorsqu'un élément de programme obsolète est utilisé ou remplacé dans du code non obsolète.

Dans votre cas, vous pouvez utiliser Java.util.Calendar class au lieu de Java.util.Date .

En passant, dans Java 8 et les versions ultérieures, ces anciennes classes sont supplantées par le nouveau package Java.time ( Tutorial ). Inspiré de Joda-Time , défini par JSR 310 , et étendu par le ThreeTen Extra projet. Les anciennes classes restent en place et vous pouvez continuer à les utiliser (tout en évitant leurs composants obsolètes), mais vous êtes encouragé à passer aux nouvelles classes.

5
missingfaktor

Obsolète signifie que c’est un héritage ou une ancienne façon de faire quelque chose et que cela doit être évité.

Selon ce document http://Java.Sun.com/j2se/1.4.2/docs/api/Java/util/Date.html , utilisez Calendar.set(...).

4
Daniel A. White

Voici un extrait de code destiné à vous aider à migrer votre code. Les deux impressions sont les mêmes.

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);                      

    }

}

Le résultat:

Tue Dec 15 16:28:41 CST 2015
Tue Dec 15 16:28:41 CST 2015
3
ChrisCantrell

Comme il est déconseillé, vous ne devriez pas vraiment l'utiliser. Vous pouvez utiliser le calendrier pour générer une date à partir de champs à la place.

2
Paul McKenzie

obsolète signifie que l'utilisation de ce constructeur est déconseillée et qu'il peut être supprimé dans les futures versions de Java. Utilisez l'API de calendrier.

1
EJB

Obsolète signifie généralement que vous n'êtes pas encouragé à utiliser cette fonction.

Pour une raison ou une autre, il a été décidé que Java serait mieux sans elle (car une meilleure alternative existe, et vous devriez l'utiliser à la place), et donc il pourrait être supprimé d'une future version de Java. La dépréciation est essentiellement un avertissement selon lequel "ceci sera probablement supprimé à l'avenir, bien que nous le gardions un peu plus longtemps pour vous permettre de le supprimer d'abord de votre code"

0
jalf

Obsolète signifie l'API principale et les autres bibliothèques Java ne dépendent pas d'elle et indique que vous avez de meilleures méthodes.

0
Premraj