public NeedMenuItem(final JFrame frame,final JTabbedPane jtb) {
// TODO Auto-generated constructor stub
super();
itemAbout.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,
ActionEvent.CTRL_MASK));
itemAbout.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
jtb.setSelectedIndex(1);
}
});
}
我认为actionPerformed这个是个回调函数,那么为什么传入的参数要加final???
我需要内部调用,如果不加,怎么处理??
我知道必须final,但是原理是什么呀?
追答内部类引用外部类局部变量时必须保证局部变量是final的,是为了保证内部类与外部类的变量的同步,因为内部类在调用时会在类里生成一个copy,这就跟多线程同步一个道理了,使用final就可以最简单地保证同步
本回答被提问者采纳