Domanda

    

Questa domanda ha già una risposta qui:

         

C'è un modo per ottenere l'indirizzo di un oggetto Java?

Se la domanda viene da ?: A prima, ho letto file delle proprietà e tutti i dati dal file è stato posto nella tabella. File delle proprietà può aggiornare. Quindi, voglio ascoltare quel file. Ascolto un oggetto utilizzando PropertyChangeSupport e PropertyChangeListener.

updatedStatus = new basit.data.MyString();
    updatedStatus.addPropertyChangeListener(new java.beans.PropertyChangeListener() {

        //After changes "i", we inform the table model about new value
            public void propertyChange(PropertyChangeEvent evt) {
                Object objec=evt.getNewValue();
                tableModel.setValueAt(objec.toString(), 0, 5);
            }
        });

Se le modifiche updatedStatus poi aggiorno tavolo. Classe MyString hanno private String "Valore". Voglio ascoltare file delle proprietà. Quindi, si dovrebbe rendere updatedStatus.value e stringa di proprietà del file uguale allo stesso indirizzo. Se posso farlo, quindi non ho bisogno di ascoltare file delle proprietà.

updatedStatus.setValue(resourceMap.getString("HDI.Device.1.Name"));

Ho cercato di usare StringBuffer, ma non ho potuto realizzarlo. Ecco perché, ho fatto la domanda.

È stato utile?

Soluzione

In primo luogo - no, non è possibile ottenere l'indirizzo di un oggetto in Java; almeno, non è puro Java con nessun agente di debug ecc L'indirizzo può muoversi nel tempo, per una cosa. Non hai bisogno di esso.

In secondo luogo, è un po 'difficile da seguire la tua spiegazione, ma certamente non essere in grado di uscire senza l'ascolto per le modifiche al file stesso. Una volta caricato il file in un oggetto Properties, le eventuali modifiche successive al file sul disco non saranno essere visibile in quell'oggetto a meno che non espressamente ricaricato.

In sostanza si dovrebbe ascoltare per modifiche al file (o sondaggio) e ricaricare il file (sia in un nuovo Properties o sovrascrivere quello esistente) in quel punto. Piuttosto se si anche bisogno di ascoltare per gli aggiornamenti sul contenitore stringa dipenderà dalla vostra applicazione.

Altri suggerimenti

siamo in grado di ottenere l'indirizzo di un oggetto in memoria. Bene come? è così;

utilizzando classe sun.misc.Unsafe in Java.

creare nuovo oggetto non sicuro e utilizzare il getAddress(Object); metodo e restituirà una lunga valore che è l'indirizzo.

ed inoltre ci sono molti metodi per questa classe.

è possibile modificare i valori in questo indirizzo utilizzando putInt(Object,long offset, int value) o come questo metodo. (Ottenere un certo valore getnt(Object)).

Nota: questa classe è davvero UNSAFE . se si fanno cose sbagliate sul vostro progetto, JVM sarà fermato.

System.identityHashCode(obj) offre la prossima cosa migliore: un numero unico per ogni oggetto. Corrisponde alla implementazione predefinita Object.hashCode().

Per citare l'API: "Per quanto ragionevolmente possibile, il metodo hashCode definito dalla classe Object non ritorno interi distinti per oggetti distinti (Questo è tipicamente implementato convertendo l'indirizzo interno dell'oggetto in numero intero, ma questo. tecnica di implementazione non è richiesto dal linguaggio di programmazione Java ™.)".

Se vuoi in configurazione Commons Apache. Questa libreria ha il supporto per il caricamento dinamico di file di proprietà (per esempio). Vedere qui .

Il modo migliore per osservare se alcune modifiche apportate ai file è IMHO per rendere un valore hash con SHA1 o mda5 e salvare il valore in una cache. E si fa un filo che ogni minuti, secondi, dipende quanto spesso si guarda modifiche apportate ai file, e fare valore hash sul file. Quindi è possibile confrontare questi due valori e se i valori non sono equivalenti in modo da poter ricaricare il nuovo file.

Java non come C / C ++. in C ++, ti capiterà spesso di lavorare con l'indirizzo (che programmatore C ++ ha un puntatore chiamata concetto). Ma, ho paura che non in Java. Java è molto sicuro che impediscono di toccare il suo indirizzo.

Ma, ci sono altri modi forse lo stesso con la vostra idea è uso HashCode. HashCode di una base oggetto sul loro indirizzo sul mucchio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top