中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

關(guān)于Java高級特性之反射的詳解-創(chuàng)新互聯(lián)

不懂Java高級特性之反射?其實想解決這個問題也不難,下面讓小編帶著大家一起了解怎么去解決,希望大家閱讀完這篇文章后大所收獲。

創(chuàng)新互聯(lián)公司服務(wù)項目包括宿遷網(wǎng)站建設(shè)、宿遷網(wǎng)站制作、宿遷網(wǎng)頁制作以及宿遷網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,宿遷網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到宿遷省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

定義

JAVA反射機制是在運行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調(diào)用它的任意方法和屬性;這種動態(tài)獲取信息以及動態(tài)調(diào)用對象方法的功能稱為java語言的反射機制。

用途

在日常的第三方應(yīng)用開發(fā)過程中,經(jīng)常會遇到某個類的某個成員變量、方法或是屬性是私有的或是只對系統(tǒng)應(yīng)用開放,這時候就可以利用Java的反射機制通過反射來獲取所需的私有成員或是方法。當然,也不是所有的都適合反射,之前就遇到一個案例,通過反射得到的結(jié)果與預(yù)期不符。閱讀源碼發(fā)現(xiàn),經(jīng)過層層調(diào)用后在最終返回結(jié)果的地方對應(yīng)用的權(quán)限進行了校驗,對于沒有權(quán)限的應(yīng)用返回值是沒有意義的缺省值,否則返回實際值起到保護用戶的隱私目的。

反射機制的相關(guān)類

與Java反射相關(guān)的類如下:

類名用途
Class類代表類的實體,在運行的Java應(yīng)用程序中表示類和接口
Field類代表類的成員變量(成員變量也稱為類的屬性)
Method類代表類的方法
Constructor類代表類的構(gòu)造方法

Class類

Class代表類的實體,在運行的Java應(yīng)用程序中表示類和接口。在這個類中提供了很多有用的方法,這里對他們簡單的分類介紹。

獲得類相關(guān)的方法

方法用途
asSubclass(Class<U> clazz)把傳遞的類的對象轉(zhuǎn)換成代表其子類的對象
Cast把對象轉(zhuǎn)換成代表類或是接口的對象
getClassLoader()獲得類的加載器
getClasses()返回一個數(shù)組,數(shù)組中包含該類中所有公共類和接口類的對象
getDeclaredClasses()返回一個數(shù)組,數(shù)組中包含該類中所有類和接口類的對象
forName(String className)根據(jù)類名返回類的對象
getName()獲得類的完整路徑名字
newInstance()創(chuàng)建類的實例
getPackage()獲得類的包
getSimpleName()獲得類的名字
getSuperclass()獲得當前類繼承的父類的名字
getInterfaces()獲得當前類實現(xiàn)的類或是接口

獲得類中屬性相關(guān)的方法

方法用途
getAnnotation(Class<A> annotationClass)返回該類中與參數(shù)類型匹配的公有注解對象
getAnnotations()返回該類所有的公有注解對象
getDeclaredAnnotation(Class<A> annotationClass)返回該類中與參數(shù)類型匹配的所有注解對象
getDeclaredAnnotations()返回該類所有的注解對象

獲得類中構(gòu)造器相關(guān)的方法

方法用途
getConstructor(Class...<&#63;> parameterTypes)獲得該類中與參數(shù)類型匹配的公有構(gòu)造方法
getConstructors()獲得該類的所有公有構(gòu)造方法
getDeclaredConstructor(Class...<&#63;> parameterTypes)獲得該類中與參數(shù)類型匹配的構(gòu)造方法
getDeclaredConstructors()獲得該類所有構(gòu)造方法

獲得類中方法相關(guān)的方法

方法用途
getMethod(String name, Class...<&#63;> parameterTypes)獲得該類某個公有的方法
getMethods()獲得該類所有公有的方法
getDeclaredMethod(String name, Class...<&#63;> parameterTypes)獲得該類某個方法
getDeclaredMethods()獲得該類所有方法

類中其他重要的方法

方法用途
isAnnotation()如果是注解類型則返回true
isAnnotationPresent(Class<&#63; extends Annotation> annotationClass)如果是指定類型注解類型則返回true
isAnonymousClass()如果是匿名類則返回true
isArray()如果是一個數(shù)組類則返回true
isEnum()如果是枚舉類則返回true
isInstance(Object obj)如果obj是該類的實例則返回true
isInterface()如果是接口類則返回true
isLocalClass()如果是局部類則返回true
isMemberClass()如果是內(nèi)部類則返回true

Field類

Field代表類的成員變量(成員變量也稱為類的屬性)。

方法用途
equals(Object obj)屬性與obj相等則返回true
get(Object obj)獲得obj中對應(yīng)的屬性值
set(Object obj, Object value)設(shè)置obj中對應(yīng)屬性值

Method類

Method代表類的方法。

方法用途
invoke(Object obj, Object... args)傳遞object對象及參數(shù)調(diào)用該對象對應(yīng)的方法

Constructor類

Constructor代表類的構(gòu)造方法。

方法用途
newInstance(Object... initargs)根據(jù)傳遞的參數(shù)創(chuàng)建類的對象

示例

為了演示反射的使用,首先構(gòu)造一個與書籍相關(guān)的model——Book.java,然后通過反射方法示例創(chuàng)建對象、反射私有構(gòu)造方法、反射私有屬性、反射私有方法,最后給出兩個比較復(fù)雜的反射示例——獲得當前ZenMode和關(guān)機Shutdown。

被反射類Book.java

public class Book{
  private final static String TAG = "BookTag";
 
  private String name;
  private String author;
 
  @Override
  public String toString() {
    return "Book{" +
        "name='" + name + '\'' +
        ", author='" + author + '\'' +
        '}';
  }
 
  public Book() {
  }
 
  private Book(String name, String author) {
    this.name = name;
    this.author = author;
  }
 
  public String getName() {
    return name;
  }
 
  public void setName(String name) {
    this.name = name;
  }
 
  public String getAuthor() {
    return author;
  }
 
  public void setAuthor(String author) {
    this.author = author;
  }
 
  private String declaredMethod(int index) {
    String string = null;
    switch (index) {
      case 0:
        string = "I am declaredMethod 1 !";
        break;
      case 1:
        string = "I am declaredMethod 2 !";
        break;
      default:
        string = "I am declaredMethod 1 !";
    }
 
    return string;
  }
}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.rwnh.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當前名稱:關(guān)于Java高級特性之反射的詳解-創(chuàng)新互聯(lián)
標題URL:http://www.rwnh.cn/article4/cegooe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、網(wǎng)站策劃、響應(yīng)式網(wǎng)站品牌網(wǎng)站建設(shè)、虛擬主機、品牌網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
通河县| 进贤县| 顺义区| 广河县| 凤城市| 永靖县| 衡阳县| 大姚县| 平和县| 岢岚县| 许昌县| 扶绥县| 万荣县| 龙门县| 于田县| 万源市| 垫江县| 三门峡市| 宜君县| 平江县| 尤溪县| 富平县| 纳雍县| 闸北区| 云霄县| 山东省| 龙游县| 三河市| 洛阳市| 东海县| 常山县| 乌拉特前旗| 南开区| 秦皇岛市| 类乌齐县| 大洼县| 会泽县| 乾安县| 达孜县| 清镇市| 长葛市|