2015-05-11 15 views
6

Supponiamo che abbia un nome di classe "Test" e creo un'istanza di quella classe, Posso conoscere la data di creazione di quell'istanza?Come trovare la data di un oggetto in Java.

+1

Non è possibile, a meno che non si disponga di una variabile (di istanza), nella classe 'Test', che faccia lo stesso! – Ajoy

+0

Perché ti interessa * quando * l'oggetto è stato creato? – Raedwald

+0

@Raedwald: Mi interessa perché devo controllare il tempo di creazione di un'istanza perché sto usando un modello di progettazione singleton. –

risposta

6

Dovrete occupartene voi stessi, avendo un membro di Date instance nella vostra classe Test e inizializzandolo nel costruttore (o nella sua dichiarazione) con la data corrente.

public class Test { 

    Date date = new Date(); 

    public Date getCreationDate() 
    { 
     return date; 
    } 
} 
+0

va bene, ma ho bisogno di implementare un modello di progettazione singleton in cui ogni istanza è collegata con la sua data di creazione in modo che possiamo sapere quando è stata creata quella particolare istanza. Qualsiasi commento su come implementarlo sarebbe utile. –

+0

@MayankSharma Sembra che tu stia chiedendo una mappatura delle tue istanze alle loro date di creazione. Puoi facilmente ottenerlo con una mappa, ma qual è il punto? Data qualsiasi istanza, puoi ottenere la sua data di creazione chiamando il metodo 'getCreationDate()'. – Eran

+0

@MayankSharma Non singleton significa che esiste una sola istanza? –

5

No, gli oggetti non hanno timestamp impliciti. Se hai bisogno di sapere, aggiungi una variabile di istanza alla tua classe.

public class Test { 
    private final Date creationDate = new Date(); 

    public Date getCreationDate() { 
     return creationDate; // or a copy of creation date, to be safe 
    } 
} 
+0

Questo non verrà compilato, è possibile neutralizzare il tipo di 'creationDate'. – NikolayKondratyev

+0

Grazie, ho aggiornato e corretto –

+0

che va bene, ma ho bisogno di implementare un modello di progettazione singleton in cui ogni istanza è collegata con la sua data di creazione in modo che possiamo sapere quando è stata creata quella particolare istanza. Sarebbe utile qualsiasi commento su come implementarlo. –

0

Evitare java.util.Date

Le altre due risposte sono corrette, tranne che la classe java.util.Date è stato fuori moda dal nuovo java.time package (Tutorial) in Java 8. Il vecchio java.util.Date Le classi di .Calendar sono notoriamente fastidiose, confuse e imperfette. Evitalo.

java.time

Ottenere il momento attuale in java.time.

ZonedDateTime instantiated = ZonedDateTime.now(); 

UTC

generalmente migliore per ottenere l'abitudine di fare il vostro lavoro di back-end (logica di business, database, stoccaggio) il tutto in tempo UTC orario. Il codice sopra si basa implicitamente sul fuso orario predefinito della JVM.

Per ottenere il momento corrente in UTC in java.time.

ZonedDateTime instantiated = ZonedDateTime.now(ZoneOffset.UTC); 
Problemi correlati