成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

java反射

IntMain / 1707人閱讀

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

java反射概念

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

使用

1.首先要獲取Class對象,有三種方法

Cat cat=new Cat();
Class cat1=Class.forName("com.ncu.reflect.Cat");//Class.forName("全類名")
Class cat2=Cat.class;                           //類名.class
Class cat3=cat.getClass();                      //對象名.getclass()

2.獲取實體類的字段

Field[] getDeclaredFields()                 //獲取所有字段,不限修飾符
Field getDeclaredFields(String name)        //獲取指定字段,不限修飾符
Field[] getFields()                         //獲取所有public修飾的成員變量
Field getField(String name)                 //獲取指定名稱的public修飾的成員變量
//獲取Cat類中所有字段,不限修飾符
Class cat1=Class.forName("com.ncu.reflect.Cat");
Field[] fields = cat1.getDeclaredFields();

3.Field類用來設(shè)置和獲取字段值的方法

Cat cat=new Cat();
Field age = cat1.getDeclaredField("age");
age.set(cat,"15");                        //將cat對象age字段值設(shè)置為15
System.out.println(age.get(cat));         //獲取cat對象age字段值

4.獲取成員方法

跟獲取字段方法雷同
Method[] getMethods()  
Method getMethod(String name, 類... parameterTypes)  
Method[] getDeclaredMethods()  
Method getDeclaredMethod(String name, 類... parameterTypes) 
//
Method eat = cat1.getMethod("eat", null);//獲取一個public修飾符,無參的eat函數(shù)
eat.invoke(cat);                         //調(diào)用eat函數(shù)

5.獲取構(gòu)造函數(shù)

Constructor[] getConstructors()
Constructor getConstructor(類... parameterTypes)
Constructor getDeclaredConstructor(類... parameterTypes)
Constructor[] getDeclaredConstructors()

cat1.getConstructors();//獲取Cat類的無參構(gòu)造函數(shù)
使用場景

使用框架時有時候不知道有什么類,類有什么方法,就需要使用反射

可以將要使用的類和方法放在配置文件,不修改該類任何代碼,可以創(chuàng)建任意其他類的對象,可以執(zhí)行任意方法,達(dá)到解耦功能。只需要改變配置文件

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/75573.html

相關(guān)文章

  • Java筆記-反射機(jī)制(一)

    摘要:反射機(jī)制一結(jié)合官方通過編寫的反射教程,復(fù)習(xí)一下反射的知識。反射的概念反射是一種在運行時獲取以及修改應(yīng)用行為的一種工具。因為反射需要動態(tài)的解析類的信息,相比于非反射使用的方式要慢。反射需要獲取一定的運行時權(quán)限,在特定的安全環(huán)境下不一定存在。 Java反射機(jī)制(一) 結(jié)合Oracle官方通過JDK8編寫的反射教程,復(fù)習(xí)一下反射的知識。結(jié)尾篇補一個小例子。 主要內(nèi)容 這次博客的主要內(nèi)容就是簡...

    AWang 評論0 收藏0
  • Java 反射教程

    摘要:反射非常強大和有用。另外,反射可以用在映射結(jié)果集的列名到對象的方法。本教程將深入介紹反射。本教程還將清除一些關(guān)于范型信息在運行時可用性的認(rèn)知混淆。類對象使用反射時,起點通常是需要使用反射檢視的類的對象。 Java反射可以在運行時檢視類、接口、屬性和方法,而無需在編譯時知道類名、方法名等等。它也同樣使用反射支持實例化新的對象、調(diào)用方法和get/set屬性值。 Java反射非常強大和有用...

    klivitamJ 評論0 收藏0
  • Java反射詳細(xì)介紹

    摘要:通過反射獲取帶參無返回值成員方法并使用設(shè)置安全檢查,訪問私有構(gòu)造函數(shù)必須創(chuàng)建實例這種不行,注意和方法需要傳遞參數(shù)測試復(fù)制這個功能獲取私有方法,同樣注意和的區(qū)別賦予訪問權(quán)限調(diào)用方法。 反射 目錄介紹 1.反射概述 1.1 反射概述 1.2 獲取class文件對象的三種方式 1.3 反射常用的方法介紹 1.4 反射的定義 1.5 反射的組成 1.6 反射的作用有哪些 2.反射的...

    ingood 評論0 收藏0
  • Java反射學(xué)習(xí)小記

    摘要:反射使用類對象提供的基本元數(shù)據(jù),能從類對象中找出方法或字段的名稱,然后獲取表示方法或字段的對象。常見的反射手段有反射和反射。以之前的反射為例其中指定了方法的返回類型,其實不止如此。 Java反射機(jī)制主要提供了以下功能: 在運行時判斷任意一個對象所屬的類 在運行時構(gòu)造任意一個類的對象 在運行時判斷任意一個類所具有的成員變量和方法 在運行時調(diào)用任意一個對象的方法 生成動態(tài)代理 很多框架...

    frank_fun 評論0 收藏0
  • Reflection:Java反射機(jī)制的應(yīng)用場景

    近期在維護(hù)公司項目的時候遇到一個問題,因為實體類中的 set 方法涉及到了業(yè)務(wù)邏輯,因此在給對象賦值的過程中不能夠使用 set 方法,為了實現(xiàn)功能,所以采用了反射的機(jī)制給對象屬性賦值,借此機(jī)會也了解了反射的一些具體用法和使用場景,分以下兩點對反射進(jìn)行分析: 反射的優(yōu)勢和劣勢 反射的應(yīng)用場景 反射的優(yōu)勢和劣勢 ??個人理解,反射機(jī)制實際上就是上帝模式,如果說方法的調(diào)用是 Java 正確的打開方式...

    浠ラ箍 評論0 收藏0
  • 樂字節(jié)Java反射之一:反射概念與獲取反射源頭class

    摘要:一反射機(jī)制概念程序運行時,允許改變程序結(jié)構(gòu)或變量類型,這種語言稱為動態(tài)語言,如,是動態(tài)語言顯然,,不是動態(tài)語言,但是有著一個非常突出的動態(tài)相關(guān)機(jī)制。相關(guān)的為二獲取源頭重點打開權(quán)限所有類的對象其實都是的實例。 一、Java反射機(jī)制概念 程序運行時,允許改變程序結(jié)構(gòu)或變量類型,這種語言稱為動態(tài)語言,如Python, Ruby是動態(tài)語言;顯然C++,Java,C#不是動態(tài)語言,但是JAVA有...

    caikeal 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<