JAVA核心類
1,CLASS類——表示執行時類或介面的資訊。
可通過class物件獲取類名,父類等資訊,並可通過class類來獲取該類的屬性,方法,構造方法,包等。
獲取class物件有如下常用方法:
(已知類存在,已知類名) 直接類.class方法,返回該類的型別資訊.class。其外,class.getCanonicalName()靜態方法,返回class物件所表示的型別資訊的全類名。
(擁有一個物件的引用,改方法可用於確定物件的具體型別)物件.getClass(),返回該物件所屬類的資訊。
(已知全類名,未知該類是否存在)Class.forName(className),利用Class<?> clazz=Class.forName(className)來載入該類。
Java提供兩種方式(顯式和隱式)來實現類裝載的動態型。隱式裝載:使用new來定義一個例項變數時,如該型別還未載入到jvm中就自動裝載。顯式裝載:程式設計師根據自己需求使用Class類的forName()方法和ClassLoader的loadClass()方法。
2,Constructor類——用來描述單個建構函式,Class物件提供了4個方法供程式設計者獲取建構函式。
class.getConstructor(Class parameterTypes)呼叫class類的getConstructor(..)方法,返回指定引數型別的構造方法的Constructor物件。獲取的方法必須是共有的,否則會丟擲java.lang.NoSuchMethodException異常。
class.getDeclaredConstructor(Class parmeterTypes)放回指定引數型別的構造方法的Constructor物件,包括受保護和私有的構造方法。
class.getConstructors(),返回指定類的全部共有構造方法,並存儲在一個Constructor的數組裡,如果該類沒有構造方法,則放回一個長度為0的Constructor陣列。
class.getDeclaredConstructor()返回指定類的全部構造方法,包括私有受保護。功能如上述方法類似。
3,Method——用於描述類的單個方法(不包括構造方法)。class提供4鍾方法獲取method類物件。
介紹兩種修飾方法的宣告:final和native。final是為了不讓子類重寫該方法,該方法功能已確定,不能更改。程式碼執行時比編譯器使用inline(行內)呼叫機制。直接將該方法主體插入到呼叫處(一方面這將提高效率但如果final方法過大或多出呼叫會使主體程式碼迅速膨脹,從而降低效率)。native方法是一個Java呼叫非Java程式碼的介面,其實現體在Java語言外面實現。
getMethod(String name,Class...parameterTypes)獲取指定名稱指定引數型別的共有方法描述物件,包括本身和父類的方法。
getMethods(),獲取共有方法描述物件列表,包括本身和父類介面所有的共有方法描述物件。
getDeclaredMethod(String name,Class...parameterTyoes)獲取指定名稱指定引數型別的方法描述物件(包括受保護和私有),包括本身和父類的方法。
getDeclaredMethods(),獲取方法描述物件列表,包括共有受保護私有,本身及父類介面。
4,Field——用於描述類的單個欄位。(屬性等)class類似地提供4種方法來獲取欄位描述物件。
getField(String name),獲取指定名稱的公有屬性,否則將丟擲NoSuchFieldException異常。
getFields(),獲取公有屬性描述物件列表。
getDeclaredField(String name),獲取指定名稱的屬性,包括私有受保護。
getDeclaredFields(),放回class的所有屬性。