創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!
為巴楚等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及巴楚網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、巴楚網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!閱讀目錄
Java反射API
Java反射指的是在運(yùn)行狀態(tài)時(shí),能夠獲取類的屬性和方法或者修改類運(yùn)行時(shí)行為的過程。
java.lang.Class類提供了很多方法用于獲取元數(shù)據(jù)、檢查和改變類運(yùn)行時(shí)的行為。
Java的反射主要涉及java.lang和java.lang.reflect包下的類。
反射應(yīng)用場(chǎng)景舉例
java.lang.Class類
java.lang.Class主要提供了以下兩個(gè)功能:
java.lang.Class類常用方法
Method | Description |
---|---|
1) public String getName() | 返回類名 |
2) public static Class forName(String className)throws ClassNotFoundException | 加載類并返回Class對(duì)象 |
3) public Object newInstance()throws InstantiationException,IllegalAccessException | 創(chuàng)建實(shí)例對(duì)象 |
4) public boolean isInterface() | 判斷是否是接口 |
5) public boolean isArray() | 判斷是否是數(shù)組 |
6) public boolean isPrimitive() | 判斷是否是原始數(shù)據(jù)類型 |
7) public Class getSuperclass() | 返回父類Class引用 |
8) public Field[] getDeclaredFields()throws SecurityException | 返回類的成員屬性字段數(shù)組 |
9) public Method[] getDeclaredMethods()throws SecurityException | 返回類的方法數(shù)組 |
10) public Constructor[] getDeclaredConstructors()throws SecurityException | 返回類的構(gòu)造方法數(shù)組 |
11) public Method getDeclaredMethod(String name,Class[] parameterTypes)throws NoSuchMethodException,SecurityException | 返回類中指定參數(shù)類型的方法 |
怎樣獲取Class對(duì)象
有三種方式,如下:
forName()方法示例
可用于動(dòng)態(tài)加載,當(dāng)你知道類的全限定名時(shí),可以使用該方式。注意原始數(shù)據(jù)類型不適用該方法;
package tmp; class Simple { } public class Test { public static void main(String args[]) throws ClassNotFoundException { Class<?> c = Class.forName("tmp.Simple"); System.out.println(c.getName()); System.out.println(c.getSimpleName()); } }