Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

         

¿Hay una manera de obtener la dirección de un objeto Java?

Cuando la pregunta es de ?: En primer lugar, leí archivo de propiedades y todos los datos de archivo se colocó en la mesa. Archivo de propiedades puede actualizar. Por lo tanto, quiero escuchar ese archivo. Escucho un objeto utilizando PropertyChangeSupport y 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 los cambios updatedStatus entonces actualizar la tabla. MiCadena clase tiene cadena privada "Valor". Quiero escuchar archivo de propiedades. Por lo tanto, se debe hacer updatedStatus.value y Cadena de propiedades del archivo de igualdad en la misma dirección. Si puedo hacerlo, así que no necesito escuchar archivo de propiedades.

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

He intentado utilizar StringBuffer, pero no pude lograrlo. Por eso, hice la pregunta.

¿Fue útil?

Solución

En primer lugar - no, no se puede obtener la dirección de un objeto en Java; al menos, no de Java puro sin agente de depuración, etc. La dirección puede moverse a través del tiempo, por una cosa. Usted no lo necesita.

En segundo lugar, es un poco difícil de seguir su explicación, pero que sin duda no ser capaz de salirse sin escuchar a los cambios en el propio archivo. Una vez que haya cargado el archivo en un objeto Properties, cualquier cambio introducido posteriormente en el archivo en el disco no será visible en ese objeto a menos que vuelva a cargar específicamente.

Básicamente, usted debe escuchar los cambios realizados en el archivo (o sondear ella) y volver a cargar el archivo (ya sea en una nueva Properties o sobrescribir el existente) en ese punto. Muy si usted también necesidad de escuchar las actualizaciones en el contenedor de la cadena dependerá de su aplicación.

Otros consejos

podemos obtener la dirección de un objeto en la memoria. ¿Bueno cómo? es así;

usando la clase sun.misc.Unsafe en Java.

crear nuevo objeto inseguro y utilizar el getAddress(Object); método y devolverá un valor de largo que es la dirección.

y también hay muchos métodos para esta clase.

Puede cambiar los valores en esta dirección mediante putInt(Object,long offset, int value) o igual que este método. (Obtener algún valor getnt(Object)).

Nota: esta clase es realmente inseguro . si haces las cosas mal en su proyecto, JVM se detendrá.

System.identityHashCode(obj) entrega el siguiente mejor cosa: un número único para cada objeto. Corresponde a la aplicación Object.hashCode() por defecto.

Para citar el API: "Por mucho que sea razonablemente práctico, el método hashCode definido por la clase Object no regreso números enteros distintos para objetos distintos (Esto se implementa típicamente mediante la conversión de la dirección interna del objeto en un entero, pero esto. técnica de implementación no es requerida por el lenguaje de programación Java ™.)".

Mira en configuración de Apache Commons. Esta biblioteca cuenta con soporte para la recarga dinámica de archivos de propiedades (por ejemplo). Ver aquí .

La mejor manera de observar si algunos cambios en los archivos es mi humilde opinión para hacer un valor hash SHA1 o con MDA5 y guardar el valor en una memoria caché. Y haces un hilo que cada minuto, segundo, depende con qué frecuencia se observa cambios en los archivos, y hacer valor hash sobre el archivo. Para que pueda comparar estos dos valores, y si los valores no son equivalentes por lo que puede volver a cargar el nuevo archivo.

Java no como C / C ++. en C ++, a menudo trabajar con la dirección (que C ++ programador tiene un puntero llamado concepto). Sin embargo, me temo que no en Java. Java es muy seguro que impiden que toque su dirección.

Sin embargo, hay otras maneras tal mismas con su idea es el uso HashCode. HashCode de una base de objeto en su dirección en el montón.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top