java - 怎樣才算是一個內部類
問題描述
請問下怎樣才算是一個內部類,最近在看android的Handler方面的東西,有點被搞暈了,一般情況下的內部類我是明白的,但是為什么Handler也算是Activity的一個內部類。
public class MainActivity extends Activity{ private Handler mHandler = new Handler() {@Overridepublic void handleMessage(Message msg) { super.handleMessage(msg);} }; }
Handler并已經是一個被定義好的類,只不過在使用的時候一般回去重寫其中的handleMessage方法,這樣就算是一個內部類了嗎?這里主要是想請問下:
內部類的定義是什么?
編譯器是怎么去判斷一個類是內部類的
問題解答
回答1:如果說一般的內部類你知道,那這個內部類你應該知道才是,因為它是最基本的。
按照 Java 語言的官方定義,內部類是這樣定義的:
A nested class is a member of its enclosing class.
如果一個類是另一個類的成員,那就是內部類。內部類又分為靜態內部類和非靜態內部類
上述的 handler 是一個非靜態內部類。與靜態內部類不同的是,要初始化這樣的內部類的實例,必須先有它的外部類的一個實例。在這樣的非靜態內部類中,你可以通過MainActivity.this引用到外部類的實例。而靜態內部類是不可以的。
編譯器只要識別到一個類是定義在另一個類的內部,就能知道它是內部類。
回答2:這個叫匿名內部類
相關文章:
1. java - 同一臺電腦,我提交代碼然后推送到遠端倉庫,顯示的提交人和推送人不一致,怎么解決2. 為什么我寫的PHP不行3. html - css布局問題,背景用用div畫的三角形是否用absolute與z-index來定位與規定在下方是否是個好方案4. 我 想好好學精通一門技術,大家用的走過的路,幫我指點指點唄 讓我少走了彎路和坑的苦 ,自學,自己摸5. 正則表達式 - nginx 正則,如何匹配不以/結尾且不以.xml .html .htm結尾6. Android 高德地圖如何移除添加的某個marker?7. javascript - vue監聽data中的某一數組的某一項8. 淺談vue生命周期共有幾個階段?分別是什么?9. index.php錯誤,求指點10. java - web端百度網盤的一個操作為什么要分兩次請求服務器, 有什么好處嗎
