Dan*_*Mac 5 java memory variables user-interface
我正在开发一个GUI程序,我在其中创建了类,通过功能集群ActionListeners.我的问题是关于JVM如何处理jButton,它们添加了相同的ActionListener.
第一; 我知道JVM可以通过让指向相同字符串(例如)的两个引用变量指向内存中的相同字符串对象来节省内存.
public class Example {
String str1 = "SomeString";
String str2 = "SomeString";
}
Run Code Online (Sandbox Code Playgroud)
现在,我的问题是:如果我有5个jButton.所有按钮都添加了相同的ActionListener.当程序运行时,它们是否会添加5个单独的,相同的,同一类的实例?或者JVM会做类似的事情(对于上面提到的)?
嗯,这实际上取决于您如何创建ActionListeners. 如果你这样做了
button1.addActionListener(new ActionListener() {
....
});
....
button5.addActionListener(new ActionListener() {
....
});
Run Code Online (Sandbox Code Playgroud)
或者
ActionListener al= new ActionListener() {
....
};
button1.addActionListener(al);
....
button5.addActionListener(al);
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,您确实有 5 个不同的动作侦听器。但在第二次你就只有一个了。什么时候才能只有一个呢?当它在相同的对象上执行完全相同的操作时。
| 归档时间: |
|
| 查看次数: |
1288 次 |
| 最近记录: |