[問題] 關於final

看板java作者 (該來的還是跑不掉阿)時間16年前 (2010/02/23 13:10), 編輯推噓2(204)
留言6則, 4人參與, 最新討論串1/3 (看更多)
請問一下 我在關於swing的書中讀到JTree的程式碼 但是對於一小段有點疑惑 片段如下 final JLabel messageLabel=new JLabel("Nothing selected."); ^^^^^ add(messageLabel, BorderLayout.SOUTH); tree.addTreeSelectionListener(new TreeSelectionListener() { public void valueChanged(TreeSelectionEvent e) { TreePath tp=e.getNewLeadSelectionPath(); messageLabel.setText("Selected: "+tp.getLastPathComponent() ); } ^^^^^^^^^^^^ }); 我查小螞蟻他說final指定出不可修改的變數,我不了解的是為什麼我把final拿掉的話 會出現錯誤訊息:local variable messageLabel is accessed from within inner class ; needs to declared final 另外,我想請問addTreeSelectionListener那段裡面的valueChanged這個類別可以拉出來 跟addTreeSelectionListener成同一個scope嗎?不太懂為什麼一定要宣告這個類別 煩請指教,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.138.152.25

02/23 13:11, , 1F
==.=== valueChanged 是類別?
02/23 13:11, 1F

02/23 13:16, , 2F
錯誤訊息寫inner class,所以我想它是類別...
02/23 13:16, 2F
查到了http://caterpillar.onlyfun.net/Gossip/JavaGossip-V1/InnerClass.htm valueChanged是內部匿名類別,messageLabel是區域變數,valueChanged在用這個變數 時,實際上是複製一份,所以要宣告成final,以防變更 ※ 編輯: foxenangel 來自: 140.138.152.25 (02/23 13:30)

02/23 13:34, , 3F
valueChanged "不" 是內部匿名類別..
02/23 13:34, 3F

02/23 13:37, , 4F
內部類別指的是TSL,valueChanged是該介面必須覆寫的方法
02/23 13:37, 4F

02/23 13:37, , 5F
可以請問是什麼嗎??
02/23 13:37, 5F

02/23 13:38, , 6F
S大請問可以解釋清楚一點嗎,新手看不太懂 T_T
02/23 13:38, 6F
文章代碼(AID): #1BWsDCPZ (java)
討論串 (同標題文章)
文章代碼(AID): #1BWsDCPZ (java)