这个问题已经有一个答案在这里:

有没有办法得到的地址Java对象?

这里的问题来了?:首先,我读性文件和所有数据文件放到桌上。性文件可以更新。所以,我想听的该文件。我听一个目的使用PropertyChangeSupport和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);
            }
        });

如果updatedStatus变化然后我更新的表格。MyString类有私人串的"价值"。我想听听特性的文件。因此,它应该使updatedStatus.值和串的属性文件等在同一地址。如果我可以这样做,所以我不需要听属性文件。

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

我试图用StringBuffer,但我不能实现这一目标。这就是为什么,我问的问题。

有帮助吗?

解决方案

首先-不,你不能得到对象的地址,在Java;至少,不是纯粹的Java没有调试剂等。地址可以搬过来的时间,对于一件事情。你不需要它。

其次,它稍微很难跟你解释但你肯定 会不会 能够摆脱不听对于改变的文件本身。一旦你已经加载的文件 Properties 目的,以后的任何变化的磁盘上的文件 会不会 可见,对象除非你特别重载它。

基本上,你应该听听对于改变的文件(或调查)并重新加载的文件(无论是进入一个新的 Properties 或复盖现有的一)在这一点上。相当你是否 需要听更新的串容将取决于应用程序。

其他提示

我们可以得到的地址的目的在存储器。好怎么?它是如此;

使用太阳。杂项。不安全流。

创建新的不安全目的和使用 getAddress(Object);方法和其将返回的一个长值,是地址。

并且还有许多方法用于此类。

你可以改变价值观,在这个地址的使用 putInt(Object,long offset, int value) 或者像这样的方法。(得到了一些值 getnt(Object)).

注:此类是真的 不安全 .如果你做了错误的东西在你的项目 JVM 将被停止。

System.identityHashCode(obj) 提供了下一-最好的事情:一些独特的对象。这相当于默认的 Object.hashCode() 执行情况。

引用API:"尽可能合理实际的,哈希码定义的方法的类对象不返回不同的整数为不同的对象。(这通常是通过转换实现内部的地址的对象为一个整数,但这个执行技术不需要通过Java™编程语言。)".

看看Apache Commons配置。这个图书馆具有支持动态的重新装载的(例如)进行财产的文件。看看 在这里,.

最好的方式来观察,如果一些文件的变化是恕我直言,使一散列值与sha1或mda5和保存价值高速缓存。和你做一个线程的每一分钟,秒钟,取决于你如何经常监视文件的变化,并且使哈希价值的文件。所以你可以比较这两个价值观和如果价值观是不等同的,所以你可以重新加载新文件。

Java不喜欢C/C++。C++,你会经常与地址(C++编程人员有一个概念呼叫指针)。但是,我恐怕不是。Java是非常安全,阻止你触摸它的地址。

但是,还有其他的方式也许同样与你的想法是使用哈希码.哈希码的对象的基础上他们的地址上堆。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top