精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

吊打面試官系列:說說反射的用途及實現(xiàn)?

開發(fā) 后端
反射是Java程序開發(fā)語言的特征之一,它允許動態(tài)地發(fā)現(xiàn)和綁定類、方法、字段,以及所有其他的由于有所產(chǎn)生的的元素。通過反射,能夠在需要時完成創(chuàng)建實例、調(diào)用方法和訪問字段的工作。

 

反射是什么?

 

反射是Java程序開發(fā)語言的特征之一,它允許動態(tài)地發(fā)現(xiàn)和綁定類、方法、字段,以及所有其他的由于有所產(chǎn)生的的元素。通過反射,能夠在需要時完成創(chuàng)建實例、調(diào)用方法和訪問字段的工作。

反射機(jī)制主要提供功能

 

  • 在運行時判斷任意一個對象所屬的類
  • 在運行時構(gòu)造任意一個類的對象
  • 在運行時判斷任意一個類所具有的成員變量和方法
  • 在運行時調(diào)用任意一個對象的方法,通過反射甚至可以調(diào)用到private修飾的方法
  • 生成動態(tài)代理

反射在牛逼框架中的使用

 

  • Spring 框架的 IOC 基于反射創(chuàng)建對象和設(shè)置依賴屬性。
  • Spring MVC 的請求調(diào)用對應(yīng)方法,也是通過反射。
  • JDBC 的 Class#forName(String className) 方法,也是使用反射。

反射中,Class.forName 和 ClassLoader 區(qū)別?

 

這兩者,都可用來對類進(jìn)行加載。差別在于:

  • Class#forName(…) 方法,除了將類的 .class 文件加載到JVM 中之外,還會對類進(jìn)行解釋,執(zhí)行類中的 static 塊。
  • ClassLoader 只干一件事情,就是將 .class 文件加載到 JVM 中,不會執(zhí)行 static 中的內(nèi)容,只有在 newInstance 才會去執(zhí)行 static 塊。

反射的常用類

 

Java中反射相關(guān)的類大部分都在rt.jar下java.lang.reflect中,其實需要的類并不多,主要有以下幾個:

  1. java.lang.Class 

Class類的實例表示正在運行的Java類和接口。

  1. java.lang.reflect.Field 

提供有關(guān)類或者接口的屬性信息,以及對它的動態(tài)訪問權(quán)限。反射的字段可能是一個類(靜態(tài))屬性或?qū)嵗龑傩裕唵蔚睦斫饪梢园阉闯梢粋€封裝反射類的屬性的類。有點繞,慢慢體會吧。

  1. java.lang.reflect.Constructor 

提供關(guān)于類的單個構(gòu)造方法的信息以及對它的訪問權(quán)限。這個類和Field類不同,F(xiàn)iled類封裝類反射類的屬性,而Constructor類則封裝類反射類的構(gòu)造方法。

  1. java.lang.reflect.Method 

提供關(guān)于類和接口上單個方法的信息。所反映的方法可能是類方法或者實例方法(包括抽象方法)。這個類不難理解,他的作用就是用來封裝反射類方法的一個類。

  1. java.lang.reflect.Modifier 

提供了用于解碼類和成員訪問修飾符的靜態(tài)方法和常量。修飾符集合被表示為具有表示不同修飾符的不同位位置的整數(shù)。

  1. java.lang.reflect.Array 

提供了動態(tài)創(chuàng)解決數(shù)組和訪問數(shù)組的靜態(tài)方法,該類中的所有方法都是靜態(tài)方法。

反射的優(yōu)缺點

 

優(yōu)點

  • 可以在程序運行的過程中,操作這些對象。
  • 可以解耦,提高程序的可擴(kuò)展性。

缺點

  • 因為是JVM操作,所以對于性能來說會有所下降。
  • 容易對程序源碼造成一定的混亂。

探索 Class

 

java文件編譯后變成class文件,class文件被類加載器加載到內(nèi)存中,并且JVM根據(jù)其字節(jié)數(shù)組創(chuàng)建了對應(yīng)的Class對象。

Class類是Java反射的起源,針對任何一個我們想使用的類,只有先為它產(chǎn)生一個Class對象,接下來就可以通過Class對象獲取其他的信息。

JVM為每個類管理著一個獨一無二的Class對象,當(dāng)我們需要創(chuàng)建每個類的對象時,JVM會檢查所要加載的類對應(yīng)的Class對象是否已經(jīng)存在。不存在,則JVM會根據(jù)類加載機(jī)制加載并創(chuàng)建對應(yīng)的Class對象,最后使用Class對象創(chuàng)建出我們通常使用的實例對象。

獲取Class類的三種方式

1.調(diào)用Object類的getClass()方法獲得Class對象。

2.使用Class類的forName("com.tian.XXX")靜態(tài)方法獲取與字符串對應(yīng)的對象(類或接口的全限定名)。

3.使用.class獲取該類性的Class對象。

Class常用方法

 

方法非常之多。

獲取類信息

了解了Java反射的詳細(xì)細(xì)節(jié)之后,我們可以使用反射機(jī)制來獲取類中的信息。

 

創(chuàng)建對象

使用無參構(gòu)造方法創(chuàng)建對象

比如說下面這段代碼:

  1. Class clazz = Class.forName("java.lang.String"); 
  2. String str = (String)clazz.newInstance(); 

這里需要注意,這個類必須是有無參構(gòu)造方法,不然這種方式會報錯的。

使用有參構(gòu)造方法

可以使用三個步驟來完成:

1.獲取指定類對應(yīng)的Class對象

2.通過Class對象獲取滿足指定參數(shù)類型要求的構(gòu)造方法類對象

3.調(diào)用指定的Constructor對應(yīng)的newInstance方法,傳入對應(yīng)的參數(shù)值,創(chuàng)建出我們想要的實例對象。

  1. Class clazz = Class.forName("java.lang.String"); 
  2. Constructor constructor = clas.getConstructor(String.class); 
  3. String str = (String)constructor.newInstance("hello world"); 

這樣就創(chuàng)建了一個String對象實例。

調(diào)用方法

前面已經(jīng)聊過Method這個類,我們可以通過Method類中的invoke方法動態(tài)調(diào)用器方法。

  1. public final class Method extends Executable { 
  2.     public Object invoke(Object obj, Object... args){ 
  3.     //.... 
  4.     } 

這個方法的第一個參數(shù)是一個對象類型,表示要在指定的這個對象上調(diào)用這個方法(方法名稱)。第二個參數(shù)是可變參數(shù),用來給這個方法傳遞參數(shù)值;

invoke方法里返回的值用來表示動態(tài)調(diào)用指定方法后的返回值。如果調(diào)用私有的方法,先調(diào)用setAccessible(true)來曲線Java語言堆笨方法的訪問檢查,然后再調(diào)用invoke方法來真正執(zhí)行這個私有方法。

訪問成員變量的值

使用反射可以獲取類的成員變量的對象代表,成員變量的對象代表是

java.lang.reflect.Field類的實例,可以使用他的getXyy()方法來獲取指定對象上的值,也可以使用setXyy()方法來動態(tài)修改指定對象上的值,其中xyy是成員變量。

比如說:setAge(22);其中age就是成員變量。

操作數(shù)組

數(shù)組也是一個度一項,可以通過反射來查看數(shù)組的各個屬性的信息,比如

  1. ingt [] intArr=new Int[10]; 
  2. Sysytem.out.prinlt("數(shù)組類型:"+intArr.getClass.getComponentType().getName()); 
  3.  
  4. Object obj=Array.newInstance(int.class, 10); 
  5. //維數(shù)組賦值 
  6. for(int i=0;i<10;i++){ 
  7.     Array.setInt(obj,i,i); 
  8. for(int i = 0;i<10;i++){ 
  9.     System.out.print("第"+i+"好元素為"+Array.getInt(obj,i)); 

反射與動態(tài)代理

代理模式是Java中使用頻率相當(dāng)高的設(shè)計模式之一,尤其是在牛逼的框架中,Spring,Mybatis,Dubbo等框架中。

其中反射就是一個很好的應(yīng)用。

靜態(tài)代理模式我們就沒有必要提他了,相當(dāng)于一個業(yè)務(wù)需要代理,你就得給他搞一個代理類。全是手動搞出來的。

動態(tài)代理的原理就是,在程序運行時候根據(jù)需要動態(tài)地創(chuàng)建目標(biāo)類的代理對象,典型應(yīng)用場景:

  • JDK動態(tài)代理
  • CGlib動態(tài)代理

關(guān)于動態(tài)代理,后面有專門的文章分析。

到此我們的反射相關(guān)的意見講完了。具體還是建議自己下去手動敲敲代碼,體會一下,便于更深刻的理解。

總結(jié)

 

面試被問到,建議回答以下幾個方面的內(nèi)容:

1.反射是什么

2.提供了什么功能

3.常用類有哪些

4.優(yōu)缺點是什么

5.其他框架中國的應(yīng)用(動態(tài)代理)

本文轉(zhuǎn)載自微信公眾號「Java后端技術(shù)全棧」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Java后端技術(shù)全棧公眾號。

 

責(zé)任編輯:武曉燕 來源: Java后端技術(shù)全棧
相關(guān)推薦

2024-03-14 14:56:22

反射Java數(shù)據(jù)庫連接

2025-04-08 00:00:00

@AsyncSpring異步

2024-08-22 10:39:50

@Async注解代理

2024-03-05 10:33:39

AOPSpring編程

2024-07-31 08:28:37

DMAIOMMap

2024-12-06 07:00:00

2024-09-20 08:36:43

零拷貝數(shù)據(jù)傳輸DMA

2024-03-22 06:56:24

零拷貝技術(shù)數(shù)據(jù)傳輸數(shù)據(jù)拷貝

2024-02-29 16:49:20

volatileJava并發(fā)編程

2024-08-29 16:30:27

2024-08-12 17:36:54

2025-02-28 00:00:00

2024-06-04 09:02:03

2021-06-07 17:12:22

線程安全Atomic

2024-03-01 11:33:31

2024-12-04 14:45:14

零拷貝技術(shù)CPU 拷貝Zero-copy

2024-03-28 10:37:44

IoC依賴注入依賴查找

2021-05-20 08:34:03

CDN原理網(wǎng)絡(luò)

2024-11-19 15:13:02

2023-12-27 18:16:39

MVCC隔離級別幻讀
點贊
收藏

51CTO技術(shù)棧公眾號

亚洲综合图片一区| 国产高清视频网站| 免费观看成年在线视频网站| 日本欧美一区二区三区乱码| 啊v视频在线一区二区三区| 免费人成视频在线播放| а√在线中文在线新版| 欧美国产综合色视频| 亚洲精品免费在线视频| 亚洲欧美自拍视频| 婷婷亚洲综合| 精品一区二区电影| 男生操女生视频在线观看| av中文字幕在线看| 成人免费在线视频| 蜜桃91精品入口| 亚洲成人77777| 日韩二区在线观看| 久久久影视精品| 麻豆网址在线观看| 国产精品最新| 亚洲精品v欧美精品v日韩精品| 在线观看免费黄网站| 国产精品论坛| 亚洲综合在线第一页| 亚洲精品国产系列| 视频在线观看你懂的| 国产高清不卡二三区| 国产噜噜噜噜久久久久久久久| 久久9999久久免费精品国产| 亚洲激情中文| 中文字幕精品一区二区精品| 黑人巨大精品欧美| 岛国av一区| 日韩欧美亚洲国产另类| 999在线观看| 电影亚洲精品噜噜在线观看| 精品久久久久久中文字幕一区奶水 | 中文字幕一区图| 717成人午夜免费福利电影| 久草综合在线观看| 国产精品一区二区av影院萌芽| 亚洲最新在线观看| 蜜臀在线免费观看| 黄页视频在线播放| 国产精品超碰97尤物18| 无码免费一区二区三区免费播放| 亚洲av成人无码网天堂| 成人午夜又粗又硬又大| www.一区二区三区| 成人激情四射网| 国产精品一区二区免费不卡| 91免费国产网站| 国产精品特级毛片一区二区三区| 老汉av免费一区二区三区| 国产精品精品久久久| 国产99久久久久久免费看| 蜜桃av综合| 国产91色在线|| 亚洲 日本 欧美 中文幕| 国产亚洲精品自拍| 日本在线精品视频| 国产精品无码一区| 精品在线播放免费| 91免费在线视频| 性欧美一区二区三区| 国产成人精品1024| 国外成人免费视频| 久久久久久青草| 国产精品人人做人人爽人人添| 亚洲人成网站在线观看播放 | 国产精品水嫩水嫩| 亚洲午夜精品一区二区三区| 色的视频在线免费看| 亚洲欧美日韩国产中文在线| 日韩人妻一区二区三区蜜桃视频| 欧美v亚洲v| 狠狠躁18三区二区一区| av视屏在线播放| 亚洲狼人在线| 亚洲成色www8888| 一级做a爰片毛片| 日韩伦理一区| 欧美激情18p| 五月天激情四射| 精一区二区三区| 国产精品 日韩| 国产精品一级伦理| 亚洲黄色小说网站| 成人午夜视频免费在线观看| 欧美黄色网络| 亚洲国产欧美自拍| 99精品中文字幕| 国产欧美在线| 成人xxxx视频| 欧美日本韩国一区二区| 亚洲欧美中日韩| 免费看一级大黄情大片| 欧美性aaa| 亚洲国产精品成人一区二区| 国产极品视频在线观看| 尤物在线精品| 国产日韩中文字幕| 香蕉国产在线视频| 亚洲欧洲色图综合| 欧美在线观看成人| 久久gogo国模啪啪裸体| 亚洲男人的天堂在线播放| 无码人妻精品一区二区三区夜夜嗨| 在线亚洲成人| 亚洲最大福利视频网站| 福利视频在线看| 天天影视色香欲综合网老头| 毛片毛片毛片毛| 国产精品嫩草影院在线看| 久久99精品久久久久久琪琪 | 理论片日本一区| 欧美日韩精品一区| 美足av综合网| 91精品国产91热久久久做人人| 亚洲精品乱码久久久久久久久久久久| 国产在线欧美| 亚洲va欧美va国产综合久久| 高h视频在线| 色视频欧美一区二区三区| 黄色av电影网站| 亚洲理论电影网| 国产精品网红福利| 男人av在线| 亚瑟在线精品视频| 国产大尺度视频| 亚洲综合色网| 成人欧美一区二区三区黑人| 高清毛片在线看| 在线亚洲欧美专区二区| 亚洲专区区免费| 国产日韩欧美一区| 国产一区二区久久久| 亚洲男同gay网站| 日韩视频一区二区三区| 日本中文在线视频| 久久国产精品99久久久久久老狼| 日本一区免费| 经典三级一区二区| 一区二区在线视频| 黄色网址中文字幕| 国产欧美日韩久久| 天堂av在线网站| 欧美r级电影| 成人午夜高潮视频| 成a人片在线观看| 欧美一二三四区在线| 538任你躁在线精品视频网站| 国产一区二三区| 干日本少妇视频| 亚洲欧美日本国产| 97精品久久久| 欧美女v视频| 色妹子一区二区| 999精品久久久| 精品一区二区三区久久久| 伊人久久大香线蕉av一区| 亚洲久草在线| 欧美—级a级欧美特级ar全黄| 日本精品久久久久| 欧美午夜宅男影院在线观看| 成年人免费观看视频网站| 日本成人超碰在线观看| 在线观看成人av电影| 8848成人影院| 欧美在线视频在线播放完整版免费观看 | 成人性生交大片免费| 久久久久免费看黄a片app| 亚洲+变态+欧美+另类+精品| 国产精品久久视频| 影音先锋男人在线资源| 亚洲精品国产精品久久清纯直播| 99久久久无码国产精品免费蜜柚| 国产精品色一区二区三区| 亚洲综合123| 在线亚洲观看| 午夜啪啪免费视频| 红杏视频成人| 国产精品视频久久久久| 污污的网站在线看| 亚洲欧美激情视频| 国产麻豆一精品一男同| 婷婷中文字幕综合| 国产美女网站视频| av在线不卡网| 日韩成人av免费| 欧美一级二区| 日韩第一页在线观看| 女同另类激情重口| 成人久久一区二区三区| 成年女人在线看片| 日韩在线免费高清视频| 日韩一区二区三区不卡| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 欧美三级日本三级| 国产欧美综合在线| 最新国产精品自拍| 日韩高清在线电影| 每日在线观看av| 婷婷成人基地| 欧美另类高清视频在线| jazzjazz国产精品麻豆| 国产精品久久一区主播| 美女高潮视频在线看| 久久av中文字幕| 国产女主播在线直播| 亚洲第一色中文字幕| 国产精品一区二区av白丝下载| 色综合一区二区三区| 国产在线视频在线观看| 最近日韩中文字幕| 国产精品高清无码在线观看| 成人福利在线看| 色黄视频免费看| 蜜臀av性久久久久蜜臀aⅴ四虎| 久久久久免费看黄a片app| 欧美国产日本| 亚洲午夜在线观看| 精品国产欧美日韩| 蜜桃91精品入口| 女同另类激情重口| 国产日韩一区欧美| 亚洲高清在线一区| 91精品在线观看视频| 最新日韩一区| 国产精品福利在线观看| 欧美性xxx| 日本精品在线视频 | 国产精品视频网址| 日韩av福利| 青青草国产精品一区二区| 18aaaa精品欧美大片h| 九九热精品在线| 三级网站视频在在线播放| 麻豆国产va免费精品高清在线| 91.xxx.高清在线| 在线成人激情黄色| www.中文字幕久久久| 亚洲视频一区二区三区| 欧美孕妇孕交| 亚洲午夜女主播在线直播| 久久伊伊香蕉| 一区二区成人av| 3d成人动漫在线| 久久精品国产久精国产一老狼 | 日本免费一区视频| 亚洲激情中文字幕| 亚洲欧美综合一区二区| 日韩成人激情在线| 久草视频视频在线播放| 国产一区av在线| 午夜视频在线看| 久久国产精品久久久久| av电影高清在线观看| 欧美日韩国产成人在线| av成人影院在线| 4p变态网欧美系列| 亚洲精品.com| 成人国产精品久久久久久亚洲| 电影一区中文字幕| 国产精品.com| 欧美国产日本高清在线| 国产精品久久久久久久妇| 午夜视频在线观看一区二区三区| 精品无码人妻一区二区三区品| 亚洲成人精品影院| 国产精品免费精品一区| 91官网在线观看| 91肉色超薄丝袜脚交一区二区| 欧美一级一级性生活免费录像| 精品人妻久久久久一区二区三区| 精品国产三级电影在线观看| 无码精品黑人一区二区三区| 亚洲天堂色网站| 久久精品视频免费看| 久久久久久com| 午夜无码国产理论在线| 91香蕉亚洲精品| 欧美大胆a级| 亚洲国产精品综合| 欧美日本亚洲韩国国产| 黄色国产精品视频| 国内久久婷婷综合| 国产精品福利导航| 日韩一区在线看| 日本一区二区不卡在线| 在线免费不卡视频| 成人精品在线播放| 中文欧美在线视频| 国产福利电影在线播放| 国产欧美精品一区二区三区介绍| julia中文字幕一区二区99在线| 欧美极品jizzhd欧美| 最新精品国产| 免费日韩视频在线观看| 国产精品影视天天线| 黄色aaa视频| 亚洲国产欧美日韩另类综合| 丰满熟女人妻一区二区三| 亚洲第一网站男人都懂| 香蕉视频在线播放| 欧美专区在线播放| 精品一区二区三区中文字幕| 欧美一区二区三区精美影视| 欧美va天堂在线| 国产精品久久a| 91视视频在线观看入口直接观看www| 久久av红桃一区二区禁漫| 一本久久综合亚洲鲁鲁五月天| 国产成人无码www免费视频播放| 中文字幕免费精品一区| 在线黄色的网站 | 91九色鹿精品国产综合久久香蕉| 日本在线播放一区| 亚洲美洲欧洲综合国产一区| 免费黄频在线观看| 中文字幕av一区二区三区高 | 午夜在线精品| 91精品又粗又猛又爽| 亚洲女与黑人做爰| 伊人色综合久久久| 亚洲性视频网站| 欲香欲色天天天综合和网| 国产精品国色综合久久| 欧美在线播放| 国产精品999.| 日韩一区欧美小说| 亚洲一级黄色大片| 中文字幕少妇一区二区三区| 亚洲国产福利| 欧美亚洲丝袜| 亚洲影音先锋| 亚洲第一成人网站| 色先锋aa成人| 黄网在线观看| 国产成人久久精品| 久久最新网址| 美女网站免费观看视频| 2024国产精品视频| 亚洲精品男人的天堂| 亚洲精品一区久久久久久| 欧亚av在线| 欧美亚洲免费高清在线观看| 久久精品综合| 日本免费www| 欧美日韩成人在线| 久cao在线| 亚洲影院色无极综合| 午夜久久福利| 色哟哟网站在线观看| 亚洲国产日韩一区二区| 天天干天天摸天天操| 97在线观看视频国产| 日韩伦理一区二区三区| 欧美成人精品欧美一级乱| 国产午夜精品一区二区三区视频 | 精精国产xxxx视频在线播放| 久久青青草原一区二区| 性欧美长视频| 欧美亚洲色综久久精品国产| 欧美精品自拍偷拍| 欧美人与性动交α欧美精品图片| 99久久99久久精品国产片| 一本综合久久| 一级黄色片网址| 在线综合+亚洲+欧美中文字幕| 天堂av最新在线| 精品一区久久| 麻豆一区二区三| 久草国产在线视频| 亚洲精品小视频| 91麻豆精品国产综合久久久 | 一本色道久久综合亚洲精品小说 | 噜噜噜91成人网| 三级黄色录像视频| 欧美tk丨vk视频| 欧美xo影院| 国产卡一卡二在线| a美女胸又www黄视频久久| 伊人久久中文字幕| 免费av一区二区| 亚洲精品亚洲人成在线| 九九热免费精品视频| 一区二区三区四区五区视频在线观看 | 日韩av电影天堂| 精品少妇久久久| 尤物精品国产第一福利三区| 伊人久久影院| 无限资源日本好片| 亚洲综合在线五月| 91精品国产91久久久久游泳池 | 国产成人一区二区三区影院| 天堂在线精品视频| 色94色欧美sute亚洲线路一ni| av在线免费网站|