久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

Android開發必知的java嵌套類

瀏覽:75日期:2022-09-05 15:13:17

嵌套類指定義在另一個類的內部的類,嵌套類的存在只是為了他的外圍類。嵌套類有四種:靜態成員類,非靜態成員類,匿名類,局部類。

靜態成員類是最簡單的一種嵌套類。最好把它看做是一個普通的類,只是恰好定義在另一個類的內部。靜態成員類可以訪問外圍類的所有成員,包括那些私有的變量。靜態成員類同樣遵守可訪問性規則,如果將它定位私有,它就指在外圍類的內部才能訪問到。

在Android中 最為熟悉listview的ViewHolder我們通常使用的就是靜態成員類,通常作為一個公有的輔助類。作為Listview的緩存變量緩存view中布局。

私有靜態成員類,用來代表外圍類所代表的對象的組件。

代碼如下

public class PhotoListAdapter extends RecyclerView.Adapter<PhotoListAdapter.ImageVH> {static class ImageVH extends RecyclerView.ViewHolder { //代碼省略 }}

?

非靜態成員類與靜態成員類的語法區別在于是否有修飾符static 。盡管它們的語法很像,但是兩者的區別很大。非靜態成員類的每個實例都隱含這與外部類的一個外圍實例相關聯,非靜態成員類實例方法內部,可以調用外圍實例上的方法,只有靜態成員類的實例可以在外圍類獨立存在,沒有外圍實例的情況下,無法創建非靜態成員類的實例。

當非靜態成員類的實例創建,它與外圍實例之間的關聯也隨之被建立,而且這種關聯關系以后不能被修改。 這個關聯通常發生在外圍類的某個實例方法調用了非靜態成員類的構造器時。 這種關聯關系需要消耗非靜態成員類實例的空間,并增加了構造的時間開銷。 如果成員類不需要訪問外圍類實例 請加上static修飾詞

public class PhotoListAdapter extends RecyclerView.Adapter<PhotoListAdapter.ImageVH> { class ImageVH extends RecyclerView.ViewHolder { // 真是對外部類的實例持有,在Android開發中很大部分activity中的context的內存泄露因為這個原因。 }}

?

匿名類不同與JAVA的其他語法單元,匿名類沒有名字,它不是外圍類的一個成員,它不與其他的成員一起被申明,而是在使用的同時被聲明實例化。匿名類可以出現在代碼任何存在表達式的地方。只有匿名類出現在非靜態的環境中,他才有外圍實例,即使它聲明在靜態的環境中,也不可能擁有任何靜態成員。

imageView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) { // 代碼省略} });

?

局部類在任何'可以聲明局部變量'的地方聲明。同樣遵守作用域規則,1. 局部類擁有名字,可以被重復使用。2. 與匿名類,只有當局部類是在非靜態環境定義的時候,才有外圍實例,不能包含靜態成員。

public class mainActivity extends Activity{ private Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) { // 此處同樣可能引起context持有導致的內存泄露} }; }

?

來自:http://www.jianshu.com/p/907758c2a63f

標簽: Java
相關文章:
主站蜘蛛池模板: 桐柏县| 望江县| 榆树市| 鄂温| 磴口县| 盱眙县| 鄄城县| 资源县| 洛阳市| 阿坝| 岚皋县| 政和县| 斗六市| 嵊州市| 棋牌| 陇川县| 孝义市| 仙游县| 莒南县| 扎赉特旗| 丰原市| 齐齐哈尔市| 涟水县| 莆田市| 灵璧县| 虞城县| 确山县| 新丰县| 自贡市| 唐海县| 秦皇岛市| 泗洪县| 舒城县| 新营市| 双牌县| 鄱阳县| 饶阳县| 叙永县| 承德县| 临桂县| 隆林|