我正在开发一个GUI程序,在其中创建了一些类,这些类按功能将ActionListeners聚类。我的问题是关于JVM如何处理jButton,已将相同的ActionListener添加到它们中。

第一的;我知道JVM可以节省内存,方法是让两个指向同一字符串(例如)的引用变量指向内存中的同一字符串对象。

public class Example {
    String str1 = "SomeString";
    String str2 = "SomeString";
}

现在,我的问题是:如果我有5个jButton。所有按钮都添加了相同的ActionListener。当程序运行时,是否会向它们添加5个相同类的单独的,相同的实例?还是JVM会做类似的事情(与上面提到的一样)?
  • 预先感谢:)
  • 最佳答案

    好吧,这实际上取决于您如何创建ActionListeners。如果你做了

    button1.addActionListener(new ActionListener() {
        ....
    });
    ....
    button5.addActionListener(new ActionListener() {
        ....
    });
    

    或者
    ActionListener al= new ActionListener() {
        ....
    };
    button1.addActionListener(al);
    ....
    button5.addActionListener(al);
    

    诚然,在第一种情况下,您有5个不同的 Action 监听器。但是在第二个中,您只有一个。什么时候只有一个?当它在完全相同的对象上执行相同的操作时。

    关于Java,引用变量指向内存中的同一对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18409935/

    10-12 23:03