La data di costruzione (…) è deprecata. Cosa significa? (Giava)

Sto cercando di creare una data come questa:

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

ed Eclips mi dà questo avvertimento: “Il costruttore Date (int, int, int, int, int) è deprecato“.

Cosa significa per un costruttore essere deprecato? Cosa posso fare?

Deprecato significa letteralmente disapprovato , ma una traduzione più accurata sarebbe ritirata . Deprecato significa che questo metodo è ancora utilizzabile, ma non dovresti usarlo. Sarà gradualmente eliminato. C’è un nuovo metodo per fare la stessa cosa . I metodi obsoleti sono contrassegnati da un commento Javadoc speciale:

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

Usa :

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

o

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

Come suggerito dalla documentazione dell’API .

Significa che non dovresti usarlo nel nuovo codice. Questo è in genere il caso se ora c’è un modo migliore per ottenere qualcosa, ma la vecchia maniera viene mantenuta per compatibilità con le versioni precedenti.

Invece, potresti usare l’API di Calendar , come si augura il messaggio completo – o (meglio IMO) potresti usare Joda Time o il pacchetto java.time in Java 8 (vedi il tutorial ). Entrambi sono API di data / ora di gran lunga superiori. al

Quando si tratta di API deprecate, se il messaggio del compilatore non suggerisce un’alternativa, vale sempre la pena guardare Javadoc – che in questo caso suggerisce di utilizzare Calendar.set(...) .

Deprecato significa che è un retaggio o un vecchio modo di fare qualcosa e dovrebbe essere evitato.

Secondo questo documento http://java.sun.com/j2se/1.4.2/docs/api/java/util/Date.html , utilizzare Calendar.set(...) .

Ciò significa che non dovresti usarlo nel nuovo codice in genere perché è pericoloso o perché esiste un’alternativa migliore. I compilatori avvisano quando un elemento del programma deprecato viene utilizzato o sovrascritto nel codice non deprecato.

Nel tuo caso, puoi utilizzare la class java.util.Calendar invece di java.util.Date .

A proposito, in Java 8 e versioni successive, queste vecchie classi sono soppiantate dal nuovo pacchetto java.time ( Tutorial ). Ispirato a Joda-Time , definito da JSR 310 e ampliato dal progetto ThreeTen Extra . Le vecchie classi rimangono al loro posto e puoi continuare a usarle (evitando le loro parti deprecate), ma sei incoraggiato a passare alle nuove classi.

Dato che è deprecato significa che non dovresti davvero usarlo. Potresti usare Calendar per generare una data dai campi.

deprecato significa che l’uso di questo costruttore è scoraggiato e potrebbe essere rimosso nelle versioni future di Java. Utilizza l’API del calendario.

Ecco uno snippet di codice per aiutare con la migrazione del codice. Entrambe le stampe sono uguali.

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

Il risultato:

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

Generalmente deprecato significa che sei scoraggiato dall’usare la funzione.

Per una ragione o per l’altra, è stato deciso che Java sarebbe meglio senza di esso (perché esiste un’alternativa migliore, e dovresti usarlo), e quindi potrebbe essere rimosso da una versione futura di Java. La deprecazione è fondamentalmente un avvertimento che “questo verrà probabilmente rimosso in futuro, anche se lo terremo un po ‘più a lungo per darti la possibilità di rimuoverlo dal tuo codice prima”

Deprecato significa che l’API di base e altre librerie java non dipendono da esso e dice che hai modi migliori.