怎么得到的地址Java对象?[重复]
-
20-09-2019 - |
题
这个问题已经有一个答案在这里:
- 有没有办法得到一个参考的地址吗?[重复] 5的答案
有没有办法得到的地址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是非常安全,阻止你触摸它的地址。
但是,还有其他的方式也许同样与你的想法是使用哈希码.哈希码的对象的基础上他们的地址上堆。