Question

    

Cette question a déjà une réponse ici:

         

Est-il possible d'obtenir l'adresse d'un objet Java?

Lorsque la question vient ?: Tout d'abord, je lis fichier de propriétés et toutes les données de fichier a été placé dans la table. Propriétés du fichier peut mettre à jour. Donc, je veux écouter ce fichier. J'écoute un objet en utilisant PropertyChangeSupport et 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);
            }
        });

Si des modifications updatedStatus puis mettez à jour i table. classe MaChaîne ont private String "Value". Je veux écouter fichier de propriétés. Ainsi, il devrait updatedStatus.value et chaîne de fichier de propriétés égales à la même adresse. Si je peux le faire, donc je ne ai pas besoin d'écouter le fichier de propriétés.

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

J'ai essayé d'utiliser StringBuffer, mais je ne pouvais pas y parvenir. Voilà pourquoi, je posais la question.

Était-ce utile?

La solution

Tout d'abord - non, vous ne pouvez pas obtenir l'adresse d'un objet en Java; au moins, pas Java pur sans agent de débogage, etc. L'adresse peut se déplacer au fil du temps, pour une chose. Vous n'avez pas besoin.

En second lieu, il est un peu difficile à suivre vos explications, mais vous avez certainement pas être en mesure de sortir sans écouter des modifications du fichier lui-même. Une fois que vous avez chargé le fichier dans un objet Properties, les modifications ultérieures du fichier sur le disque pas être visible dans cet objet à moins que vous rechargerez spécifiquement.

Fondamentalement, vous devez écouter les modifications apportées au fichier (ou un sondage, il) et recharger le fichier (dans une nouvelle Properties ou écraser l'existant) à ce moment-là. Tout à fait si vous aussi besoin d'écouter les mises à jour sur le conteneur de chaîne dépendra de votre application.

Autres conseils

nous pouvons obtenir l'adresse d'un objet en mémoire. Bien comment? il est comme ça;

en utilisant la classe sun.misc.Unsafe en java.

créer un nouvel objet insalubre et utiliser le getAddress(Object); méthode et il retournera une longue valeur qui est l'adresse.

et aussi il existe de nombreuses méthodes pour cette classe.

vous pouvez modifier les valeurs dans cette adresse à l'aide putInt(Object,long offset, int value) ou comme cette méthode. (Obtenir une getnt(Object) valeur).

Remarque: cette classe est vraiment DANGEREUSE . si vous faites des choses mauvaises sur votre projet, JVM sera arrêté.

System.identityHashCode(obj) offre la prochaine meilleure chose: un numéro unique pour chaque objet. Elle correspond à la mise en œuvre de Object.hashCode() par défaut.

Pour citer l'API: « Autant que cela est raisonnablement possible, la méthode hashCode définie par la classe Object ne retourne des entiers distincts pour des objets distincts (Ceci est généralement mis en œuvre en convertissant l'adresse interne de l'objet dans un entier, mais cela. technique de mise en œuvre n'est pas requise par le langage de programmation Java ™.) ».

Regardez dans la configuration Apache Commons. Cette bibliothèque a un support pour le rechargement dynamique des fichiers de propriétés (par exemple). Voir .

La meilleure façon d'observer si des changements de fichiers est à mon humble avis pour faire une valeur de hachage avec SHA1 ou MDA5 et enregistrez la valeur dans un cache. Et vous faites un fil que toutes les minutes, secondes, dépend à quelle fréquence vous regardez les changements de fichiers, et de faire valeur de hachage sur le fichier. Ainsi, vous pouvez comparer ces deux valeurs et si les valeurs ne sont pas équivalentes, vous pouvez alors recharger le nouveau fichier.

Java pas comme C / C ++. en C ++, vous souvent travailler avec l'adresse (C ++ que programmeur a un pointeur d'appel de concept). Mais, je crains que non en Java. Java est très sûr que vous empêchez de toucher son adresse.

Mais, il y a d'autres façons peut-être même avec votre idée est d'utiliser HashCode. HashCode d'une base d'objets sur leur adresse sur Heap.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top