【发布时间】:2013-08-23 18:55:24
【问题描述】:
我正在开发一个 GUI 程序,我在其中创建了类,按功能将 ActionListener 聚集在一起。我的问题是关于 JVM 如何处理 jButtons,它们添加了相同的 ActionListener。
首先;我知道 JVM 可以通过让两个指向相同字符串(例如)的引用变量指向内存中的相同字符串对象来节省内存。
public class Example {
String str1 = "SomeString";
String str2 = "SomeString";
}
现在,我的问题是:如果我有 5 个 jButton。所有按钮都添加了相同的 ActionListener。当程序运行时,它们是否会添加 5 个单独的、相同的、相同类的实例?或者JVM会做类似的事情(与上面提到的)?
- 提前致谢 :)
【问题讨论】:
-
如果您向我们展示您在做什么,我们可以告诉您将会发生什么。或者你可以自己测试一下。您的问题令人困惑 - 如果您将同一个 ActionListener 对象传递给五个不同的按钮,您为什么认为它会分成五个对象?
-
感谢您的回复。在我的例子中,我的意思是;如果我将五个不同的对象显式添加到五个不同的按钮 - JVM 会优化内存空间,并让它们共享同一个对象。
-
在这种情况下,没有。 JVM 不会像那样合并对象。字符串是一种特殊情况。但是,您可以对多个按钮使用相同的 ActionListener。
-
非常感谢!完美回答我的问题!
标签: java variables memory user-interface