日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java嵌套类的使用

發布時間:2025/4/14 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java嵌套类的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

嵌套類是指被定義在另一個類內部的類,它為外部類提供服務。嵌套類分四種:靜態成員類、非靜態成員類、匿名類和局部類。

一、靜態成員類與非靜態成員類的區別?在什么情況下可以用靜態成員類?

我們知道在類的設計中,為了避免繼承破壞封裝性,組合優于繼承。通過使用成員類來實現組合設計,需要足夠了解它們的特性以及在何時使用。

從表面上看,靜態成員類只是比非靜態的成員類在聲明上多出了修飾符static。盡管它們功能相似,但與實際上,非靜態成員類的每個實例都隱含關聯著一個外部類的實例。也就是說,非靜態成員類不可能獨立于它的外部類實例之外而獨立存在。

公有靜態成員類可作為輔助類,如Compass類中的枚舉Dir:

View Code 1 package com.mnid.innerclass;
2
3 public class Compass {
4 private Dir direction = Dir.SOUTH;
5
6 public static enum Dir {
7 EAST, SOUTH, WEST, NORTH;
8 }
9
10 public Dir directing() {
11 //Bulk of class omitted
12 return direction;
13 }
14 }

使用私有的靜態成員類常見方法是用來代表外圍類所代表的對象的組件,如一個Map實例,它的內部都有一個Entry對象對應Map中的所有鍵-值對,但Entry本身不需要訪問Map,因此可以使用私有靜態成員類設計。

非靜態成員類實例都額外的對外部類實例的引用會引起不必要的開銷。如果成員類不需要訪問外部類實例,就應該將其聲明為static的。

二、匿名類的限制和使用以及局部類

匿名類在聲明的同時就進行實例化。它不是外部類的成員,并且只有在非靜態環境中才有外圍實例引用。

匿名類的常見用法是動態創建函數對象:

View Code 1 public String fetchShortest(String[] strArray) {
2
3 Arrays.sort(strArray, new Comparator<String>() {
4
5 @Override
6 public int compare(String s1, String s2) {
7 return s1.length() - s2.length();
8 }
9 });
10 return strArray[0];
11 }

其他常見用法包括創建過程對象,如Runable、Thread;在靜態工廠方法內部也經常用到。

局部類可以在任何聲明局部變量的地方聲明,其特性與其他三種嵌套類一樣。

聲明匿名類和局部類時需非常簡短,以免影響可讀性。

轉載于:https://www.cnblogs.com/dummyE/archive/2012/01/14/2322297.html

總結

以上是生活随笔為你收集整理的Java嵌套类的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。