gpt4 book ai didi

java - 对于一个类中的多个操作,哪个更好? actionPerformed() 中的匿名内部类或 if 语句?

转载 作者:行者123 更新时间:2023-12-02 02:33:32 33 4
gpt4 key购买 nike

我正在努力在 java JFrame 中制作菜单。我见过两种对同一类中的不同事件有不同 react 的方法。一种是使用匿名内部类,如几年前的这个答案中所述: https://stackoverflow.com/a/10472395/5960074

public static void createMenuBar()
{
//Main Menu Items

menubar.add(fileMenu);
MainWindow.window.setJMenuBar(menubar);

//Sub menu items
saveItem = new JMenuItem("Save");
loadItem = new JMenuItem("Load");

//Add to the "File" menu item
fileMenu.add(saveItem);
fileMenu.add(loadItem);

//Anonymous Inner classes for actionListeners


//Action event for saving
saveItem.addActionListener(new ActionListener(){ //adding the listener
@Override
public void actionPerformed(ActionEvent e){ //creating the specific action for save
System.out.println("You tried to save.");
}
});

}

在我的代码中,它看起来像这样并且可以工作(此时它会在控制台上打印“您尝试保存。”)。

我见过其他人在类中实现 ActionListener,然后在方法 actionPerformed() 中使用 if 语句来跟踪事件源。因此存在一个事件,但代码会根据触发该事件的内容而发生变化。

第一种方法看起来很困惑,第二种方法更容易阅读。有理由选择第一种方法而不是第二种方法吗?

谢谢。

最佳答案

使用Action具有非匿名类的类(尽管它们可以是静态内部类)。它为您提供了很好的封装,使代码具有可读性,并且在很多方面都比使用 ActionListener 更好。

关于java - 对于一个类中的多个操作,哪个更好? actionPerformed() 中的匿名内部类或 if 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46737973/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com