作者aitch (Aitch)
看板java
标题Re: [问题] Anonymous inner class
时间Wed Oct 6 15:31:53 2010
※ 引述《legnaleurc (CA)》之铭言:
: 现在有一段 code 长这样:
: JButton button = new JButton();
: button.addMouseListener( new MouseAdapter() {
: public void mouseClicked( MouseEvent e ) {
: new Thread( new Runnable() {
: @Override
: public void run() {
: ( ( JButton )e.getSource() ).setText( "..." );
: }
: } ).start();
: }
: } );
: 然後 ... 它就说 e 要是 final 才可以
: 我只是很单纯地想要让 inner classes 可以拿到上层的引数
: 请问有好的做法吗? (不会要用 static field 吧?)
请用只有一个元素的阵列:
final JButton[] buttons = new JButton[]{new JButton()};
此时,你在Scope里只要用buttons[0]即可~
哈~~
:您为何不愿意将button换成final呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.111.2.213
1F:推 legnaleurc:我只是觉得 e 应该是属於上层 scope 的东西 10/06 15:55
2F:→ legnaleurc:应该可以 access 到, 为什麽非要加 final 不可? 10/07 21:24