[問題] 一個語法的問題

看板AndroidDev作者 (fluteroll)時間8年前 (2015/09/08 15:24), 8年前編輯推噓1(108)
留言9則, 3人參與, 最新討論串1/1
大家好,小弟在做app時想用timer,找到了以下用法 //宣告 private Handler handler = new Handler(); Runnable myRunnable=new Runnable() { @Override public void run() { // call you delay logic or method here } }; //使用 handler.postDelayed(myRunnable, 1000); 因為實在不知道這問題要下什麼關鍵字找答案,所以po文尋求解答 我想了解 Runnable myRunnable=new Runnable(){}; 此段的語法是什麼意思 new 一個實體,但又用 {}; 在裡面作 override 是繼承的簡略寫法嗎? 還是一種特殊的繼承? 又這個寫法是 java 所有的還是 android 獨有的語法OC呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.146.86.37 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1441697068.A.89C.html

09/08 15:56, , 1F
anonymous class
09/08 15:56, 1F

09/08 18:16, , 2F
樓上正解,有時候頗好用
09/08 18:16, 2F

09/08 20:16, , 3F
Runnable 是個 interface, 這個寫法是宣告一個無名 class
09/08 20:16, 3F

09/08 20:17, , 4F
實作這個 interface 並在 {} 裡實作它
09/08 20:17, 4F

09/08 20:18, , 5F
這個無名 class 只在這一行看得到用得到
09/08 20:18, 5F

09/08 20:18, , 6F
後續的處理都是由宣告出來的參考經過多型去使用它
09/08 20:18, 6F

09/08 20:19, , 7F
這個寫法不是 interface 專用, 一般 class 也可以這樣用
09/08 20:19, 7F

09/08 20:20, , 8F
這樣就變成這個無名 class 繼承寫上的那個 class 再覆載
09/08 20:20, 8F

09/08 20:21, , 9F
這是 java 官網的說明→http://tinyurl.com/ok9kxvm
09/08 20:21, 9F
我懂了,講得很清楚,感謝你們的詳解~ ※ 編輯: gn00430231 (36.231.150.197), 09/08/2015 21:19:44 ※ 編輯: gn00430231 (36.231.150.197), 09/08/2015 21:20:13
文章代碼(AID): #1LxeqiYS (AndroidDev)