作者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
推 legnaleurc:我只是覺得 e 應該是屬於上層 scope 的東西 10/06 15:55
→ legnaleurc:應該可以 access 到, 為什麼非要加 final 不可? 10/07 21:24