亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java 反射機制的實例詳解

2024-07-13 10:12:57
字體:
來源:轉載
供稿:網友

Java 反射機制的實例詳解

前言

今天介紹下Java的反射機制,以前我們獲取一個類的實例都是使用new一個實例出來。那樣太low了,今天跟我一起來學習學習一種更加高大上的方式來實現。

正文

Java反射機制定義

Java反射機制是指在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。 用一句話總結就是反射可以實現在運行時可以知道任意一個類的屬性和方法。

反射機制的優點與缺點

為什么要用反射機制?直接創建對象不就可以了嗎,這就涉及到了動態與靜態的概念

靜態編譯:在編譯時確定類型,綁定對象,即通過。

動態編譯:運行時確定類型,綁定對象。動態編譯最大限度發揮了java的靈活性,體現了多態的應用,有以降低類之間的藕合性。

優點

可以實現動態創建對象和編譯,體現出很大的靈活性,特別是在J2EE的開發中它的靈活性就表現的十分明顯。比如,一個大型的軟件,不可能一次就把把它設計的很完美,當這個程序編譯后,發布了,當發現需要更新某些功能時,我們不可能要用戶把以前的卸載,再重新安裝新的版本,假如這樣的話,這個軟件肯定是沒有多少人用的。采用靜態的話,需要把整個程序重新編譯一次才可以實現功能的更新,而采用反射機制的話,它就可以不用卸載,只需要在運行時才動態的創建和編譯,就可以實現該功能。

缺點

對性能有影響。使用反射基本上是一種解釋操作,我們可以告訴JVM,我們希望做什么并且它滿足我們的要求。這類操作總是慢于只直接執行相同的操作。

理解Class類和類類型

想要了解反射首先理解一下Class類,它是反射實現的基礎。

類是java.lang.Class類的實例對象,而Class是所有類的類(There is a class named Class) 對于普通的對象,我們一般都會這樣創建和表示:

Code code1 = new Code(); 

上面說了,所有的類都是Class的對象,那么如何表示呢,可不可以通過如下方式呢:

Class c = new Class(); 

但是我們查看Class的源碼時,是這樣寫的:

private Class(ClassLoader loader) { classLoader = loader; } 

可以看到構造器是私有的,只有JVM可以創建Class的對象,因此不可以像普通類一樣new一個Class對象,雖然我們不能new一個Class對象,但是卻可以通過已有的類得到一個Class對象,共有三種方式,如下:

Class c1 = Code.class; 

這說明任何一個類都有一個隱含的靜態成員變量class,這種方式是通過獲取類的靜態成員變量class得到的

Class c2 = code1.getClass(); 

code1是Code的一個對象,這種方式是通過一個類的對象的getClass()方法獲得的

Class c3 = Class.forName(“com.trigl.reflect.Code”); 

這種方法是Class類調用forName方法,通過一個類的全量限定名獲得 ,這里,c1、c2、c3都是Class的對象,他們是完全一樣的,而且有個學名,叫做Code的類類型(class type)。 這里就讓人奇怪了,前面不是說Code是Class的對象嗎,而c1、c2、c3也是Class的對象,那么Code和c1、c2、c3不就一樣了嗎?為什么還叫Code什么類類型?這里不要糾結于它們是否相同,只要理解類類型是干什么的就好了,顧名思義,類類型就是類的類型,也就是描述一個類是什么,都有哪些東西,所以我們可以通過類類型知道一個類的屬性和方法,并且可以調用一個類的屬性和方法,這就是反射的基礎。

舉個簡單例子代碼:

public class ReflectDemo { public static void main(String[] args) throws ClassNotFoundException { //第一種:Class c1 = Code.class; Class class1=ReflectDemo.class; System.out.println(class1.getName());  //第二種:Class c2 = code1.getClass();  ReflectDemo demo2= new ReflectDemo();  Class c2 = demo2.getClass();  System.out.println(c2.getName());  //第三種:Class c3 = Class.forName("com.trigl.reflect.Code");  Class class3 = Class.forName("com.tengj.reflect.ReflectDemo");  System.out.println(class3.getName());}} 

執行結果:

com.tengj.reflect.ReflectDemo com.tengj.reflect.ReflectDemo com.tengj.reflect.ReflectDemo 

Java反射相關操作

前面我們知道了怎么獲取Class,那么我們可以通過這個Class干什么呢?

總結如下:

獲取成員方法Method
獲取成員變量Field
獲取構造函數Constructor

下面來具體介紹

獲取成員方法信息

單獨獲取某一個方法是通過Class類的以下方法獲得的:

public Method getDeclaredMethod(String name, Class c){}

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲大尺度美女在线| 欧美视频精品一区| 国产精品香蕉在线观看| 欧美一级高清免费播放| 国产精品自拍偷拍视频| 欧美一乱一性一交一视频| 久99九色视频在线观看| 亚洲最新av网址| 亚洲欧美另类在线观看| 日韩美女毛茸茸| 亚洲第一av在线| 国产精品视频专区| 欧洲s码亚洲m码精品一区| 亚洲电影在线观看| 国产成人精品午夜| 久久久久亚洲精品国产| 日韩福利视频在线观看| 4k岛国日韩精品**专区| 亚洲国产精品久久久久秋霞不卡| 亚洲电影免费观看高清完整版| 91免费看视频.| 成人av资源在线播放| 欧美日本高清一区| 黑人巨大精品欧美一区二区三区| 97人人爽人人喊人人模波多| 久久99精品久久久久久噜噜| 亚洲男人天堂古典| 亚洲第一区中文99精品| 欧美性xxxxx极品娇小| 国产91ⅴ在线精品免费观看| 国产主播在线一区| 精品国产欧美一区二区五十路| 亚洲欧美另类在线观看| 国产精品中文字幕久久久| 亚洲视频在线观看视频| 在线精品高清中文字幕| 国产成人精品视频| 美女精品久久久| 欧美日韩另类字幕中文| 亚洲情综合五月天| 亚洲黄色www| 91精品国产综合久久久久久蜜臀| 97国产在线视频| 亚洲男人天堂2019| 色婷婷久久av| 国产在线观看精品一区二区三区| 在线看片第一页欧美| 91免费人成网站在线观看18| 欧美性猛交xxxx乱大交蜜桃| 久久成人在线视频| 国产日韩精品在线播放| 亚洲欧美激情四射在线日| 亚洲人成网站色ww在线| 一区二区欧美日韩视频| 久久久久国产一区二区三区| 中文字幕日韩免费视频| 成人网在线免费观看| 亚洲精品乱码久久久久久按摩观| 97视频人免费观看| 欧美成人午夜剧场免费观看| 国产在线观看精品| 久久精品一区中文字幕| 欧美一区二粉嫩精品国产一线天| 欧洲亚洲在线视频| 91九色在线视频| 久久久久久91| 久久激情五月丁香伊人| 国产精品免费一区| 久久亚洲精品一区| 国产视频久久网| 国产精品一香蕉国产线看观看| 欧美另类暴力丝袜| 国产精品久久久久久久久久久新郎| 欧美成人午夜激情在线| 欧美国产亚洲视频| 97超视频免费观看| 久久久999国产精品| 亚洲精品久久久久国产| 日韩美女在线播放| 成人有码在线视频| 日韩av色综合| 日韩最新中文字幕电影免费看| 精品亚洲一区二区| 蜜臀久久99精品久久久无需会员| 亚洲人成网站999久久久综合| 91精品视频在线免费观看| 岛国精品视频在线播放| 日韩在线欧美在线| 国产亚洲日本欧美韩国| 国产精品亚洲一区二区三区| 国产精品视频免费观看www| 欧美国产日韩二区| 国产精品专区一| 国产亚洲欧洲高清| 欧美区在线播放| 亚洲精品色婷婷福利天堂| 91精品视频在线免费观看| 欧美精品在线播放| 亚洲一区二区三区成人在线视频精品| 亚洲四色影视在线观看| 日韩一区二区三区xxxx| 亚洲自拍偷拍色图| 日韩专区中文字幕| 一本大道香蕉久在线播放29| 国产精品成人国产乱一区| 欧美成人手机在线| 色av吧综合网| 日韩欧美在线字幕| 91久久综合亚洲鲁鲁五月天| 久久久在线观看| 亚洲美女久久久| 精品国产欧美一区二区三区成人| 国产日韩欧美91| 国产精品入口福利| 欧美日韩亚洲精品一区二区三区| 最近2019中文字幕一页二页| 欧美成人黑人xx视频免费观看| 夜夜嗨av一区二区三区免费区| 影音先锋欧美精品| 欧美成人精品xxx| 黄网站色欧美视频| 国产欧美日韩综合精品| 久久免费视频这里只有精品| 国产精品678| 欧美性猛交xxxx黑人| xvideos亚洲| 国产欧美在线观看| 国产成人亚洲综合| 国产欧美亚洲视频| 91情侣偷在线精品国产| 亚洲自拍小视频免费观看| 国产99久久精品一区二区 夜夜躁日日躁| 国产成人福利夜色影视| 91精品国产乱码久久久久久蜜臀| 成人黄色免费网站在线观看| 亚洲另类xxxx| 欧美日韩一区二区三区在线免费观看| 欧美视频在线观看 亚洲欧| 中文字幕精品影院| 欧美激情精品久久久久久| 欧美在线视频网站| 亚洲国产小视频在线观看| 日韩电影在线观看中文字幕| 91久久久亚洲精品| 亚洲欧美另类人妖| 久久久久久综合网天天| 91久久精品视频| 中文字幕视频一区二区在线有码| 国产婷婷色综合av蜜臀av| 欧美有码在线观看视频| 亚洲欧洲在线播放| 久久av中文字幕| 国产精品88a∨| 91网站在线免费观看| 国产欧美韩国高清| 中文字幕av一区二区| 国产精品久久久久久久美男| 成人黄色在线观看| 中日韩美女免费视频网址在线观看| 欧美高清一级大片| 色综合色综合网色综合| 亚洲自拍偷拍色片视频| 一二美女精品欧洲| 在线观看国产精品日韩av|