国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Java反射機(jī)制可能是漲薪關(guān)鍵!

開發(fā) 后端
反射是一種動態(tài)類的處理機(jī)制,通過 Class類 來實現(xiàn)反射機(jī)制;在反射機(jī)制下,可以自動獲取并調(diào)用任意一個類中的組成結(jié)構(gòu)(成員屬性、方法),使得代碼的編寫更加靈活。

Java核心反射機(jī)制

基本反射

反射是一種動態(tài)類的處理機(jī)制,通過 Class類 來實現(xiàn)反射機(jī)制;

Class類的基本信息:

  1. Module java.base 
  2. Package java.lang 
  3.     Class Class<T> 
  4.         java.lang.Object 
  5.              java.lang.Class<T> 

以下三種方式獲得類的反射,三者都非常重要,牢牢掌握。

一、利用Object類中提供getClass()方法獲取實例化對象

  1. class Member {} 
  2. public class JavaReflectDemo { 
  3.     public static void main(String[] args) throws Exception { 
  4.         // 【操作特點】需要獲取一個類的實例化對象之后才可以獲取Class類實例 
  5.         Member member = new Member() ;    // 實例化Member類對象 
  6.         Class<?> clazz = member.getClass() ;     // 獲取Class類實例化對象 
  7.         System.out.println(clazz); 
  8.     } 

二、使用“類.class”形式

  1. class Member {} 
  2. public class JavaReflectDemo { 
  3.     public static void main(String[] args) throws Exception { 
  4.         // 【操作特點】直接通過一個類的完整名稱可以獲取Class類實例,需要編寫import或編寫完整類名稱 
  5.         Class<?> clazz = Member.class ;     // 獲取Class類實例化對象 
  6.         System.out.println(clazz); 
  7.     } 

三、使用Class類內(nèi)部提供的forName()方法根據(jù)類的完整名稱獲取實例化對象

  1. class Member {} 
  2. public class JavaReflectDemo { 
  3.     public static void main(String[] args) throws Exception { 
  4.         // 【操作特點】通過名稱字符串(包.類)可以獲取Class類實例,可以不使用import導(dǎo)入 
  5.         // 獲取Class類實例化對象 
  6.         Class<?> clazz = Class.forName("cn.xbhog.demo.Member");     
  7.         System.out.println(clazz); 
  8.     } 

反射獲取實例化對象

  1. package com.xbhog.反射機(jī)制; 
  2. class Member{ 
  3.     public Member() {    // 構(gòu)造方法 
  4.         System.out.println("【構(gòu)造方法】實例化Member類對象."); 
  5.     } 
  6.     @Override 
  7.     public String toString() { 
  8.         return "【toString()覆寫】博客地址:http://www.cnblogs.com/xbhog"
  9.     } 
  10.  
  11. public class 反射獲取對象 { 
  12.     public static void main(String[] args) throws Exception { 
  13.         // 獲取Class類實例化對象 
  14.         Class<?> clazz = Class.forName("com.xbhog.反射機(jī)制.Member");      
  15.         // 反射機(jī)制可以獲取任意類實例化對象(等價于關(guān)鍵字“new”),所以返回的類型為Object 
  16.         Object obj = clazz.getDeclaredConstructor().newInstance() ;// 實例化對象 
  17.         System.out.println(obj); 
  18.     } 

反射的機(jī)制可以更加方便開發(fā)者實現(xiàn)解耦和設(shè)計;

反射與類操作

在反射機(jī)制下,可以自動獲取并調(diào)用任意一個類中的組成結(jié)構(gòu)(成員屬性、方法),使得代碼的編寫更加靈活。

反射獲取類結(jié)構(gòu)

  1. package com.xbhog.反射機(jī)制; 
  2. interface IMessage{ 
  3.     public void send(); 
  4. interface IChannelService{ 
  5.     public Boolean connect(); 
  6.  
  7. abstract class AbstractBase{} 
  8. public class Mail extends AbstractBase implements IMessage,IChannelService{ 
  9.     @Override 
  10.     public void send() { 
  11.         if(this.connect()){ 
  12.             System.out.println("發(fā)送信息成功"); 
  13.         } 
  14.     } 
  15.  
  16.     @Override 
  17.     public Boolean connect() { 
  18.         return true
  19.     } 
  1. package com.xbhog.反射機(jī)制; 
  2. public class MailTest { 
  3.     public static void main(String[] args) { 
  4.         Class<Mail> aClass = Mail.class; 
  5.         System.out.println(aClass.getPackage());  //獲取類的包名 
  6.         Class<? super Mail> superclass = aClass.getSuperclass(); //獲取父類對象信息 
  7.         System.out.println(superclass.getName());  //獲取父類名字 
  8.         System.out.println(superclass.getSuperclass().getName());  //獲取父類的父類的名字 
  9.  
  10.         /*獲取接口信息*/ 
  11.         Class<?>[] interfaces = aClass.getInterfaces(); 
  12.         for (Class<?> anInterface : interfaces) { 
  13.             System.out.println(anInterface.getName()); 
  14.         } 
  15.     } 

反射調(diào)用構(gòu)造方法

反射還可以調(diào)用構(gòu)造方法,構(gòu)造方法是類中的重要組成部分,也是實例化對象時必須調(diào)用的方法。

實例:

  1. import java.lang.reflect.Constructor; 
  2. class Mail { 
  3.     private String msg ; 
  4.     public Mail() {}// 無參構(gòu)造 
  5.     public Mail(String msg) {// 單參構(gòu)造 
  6.         System.out.println("【構(gòu)造方法】調(diào)用Mail類單參構(gòu)造方法,實例化對象"); 
  7.         this.msg = msg ; 
  8.     } 
  9.     @Override 
  10.     public String toString() {    // 對象信息 
  11.         return "【toString()覆寫】消息內(nèi)容:" + this.msg; 
  12.     } 
  13. public class JavaReflectDemo { 
  14.     public static void main(String[] args) throws Exception { 
  15.         Class<?> cls = Mail.class ; // 獲取指定類的Class對象 
  16.         Constructor<?>[] constructors = cls.getDeclaredConstructors() ; // 獲取全部構(gòu)造 
  17.         for (Constructor<?> cons : constructors) { 
  18.             System.out.println(cons); 
  19.         } 
  20.         // 獲取單參構(gòu)造并且參數(shù)類型為String的構(gòu)造方法對象實例 
  21.         Constructor<?> cons = cls.getDeclaredConstructor(String.class) ; 
  22.         Object obj = cons.newInstance("www.cnblog.cn/xbhog") ;// 調(diào)用單參構(gòu)造實例化對象 
  23.         System.out.println(obj); 
  24.     } 

反射調(diào)用方法

反射機(jī)制中除了獲取類中的方法定義外,最為重要的功能就是可以利用Method類中的invoke()方法并結(jié)合實例化對象(Object類型即可)實現(xiàn)放射的調(diào)用。

反射調(diào)用類中的setter、getter方法【重點】

  1. package com.xbhog.反射機(jī)制.方法; 
  2.  
  3. import java.lang.reflect.InvocationTargetException; 
  4. import java.lang.reflect.Method; 
  5.  
  6. class Member{ 
  7.     private String name
  8.     public void setName(String name){ 
  9.         this.name = name
  10.  
  11.     } 
  12.     public String getName(){ 
  13.         return this.name
  14.     } 
  15.  
  16. public class getter_Setter { 
  17.     public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException { 
  18.         Class<?> cls = Member.class; 
  19.         String value = "xbhog"
  20.         //實例化Member對象 
  21.         Object obj = cls.getDeclaredConstructor().newInstance(); 
  22.         //反射調(diào)用方法需要明確的知道方法的名稱以及方法中的參數(shù)類型 
  23.         String setMethodName ="setName"
  24.         Method setmethod = cls.getDeclaredMethod(setMethodName, String.class);  //獲取指定方法 
  25.         setmethod.invoke(obj,value);  //對象.setName(value) 
  26.         String getMethodName = "getName"
  27.         Method getMethod = cls.getDeclaredMethod(getMethodName);  //get沒有參數(shù) 
  28.         System.out.println(getMethod.invoke(obj));//對象.getName(); 
  29.     } 

通過放射實現(xiàn)的方法調(diào)用的最大的特點是可以直接利用Object類型的實例化對象進(jìn)行調(diào)用的,但是在獲取對象時需要明確的知道方法名稱以及方法的參數(shù)類型。

Field類的作用

在實際開發(fā)中,F(xiàn)ield中的getType()方法使用的較多,可以通過其來確定屬性的類型

示例:

  1. import java.lang.reflect.Field; 
  2.  
  3. class Member{ 
  4.     private String name
  5.     public void setName(String name){ 
  6.         this.name = name
  7.  
  8.     } 
  9.     public String getName(){ 
  10.         return this.name
  11.     } 
  12. public class FIeldDemo { 
  13.     public static void main(String[] args) throws Exception { 
  14.         //獲取Member類 
  15.         Class<?> cls = Member.class; 
  16.         //實例化 
  17.         Object obj = cls.getDeclaredConstructor().newInstance(); 
  18.         //成員屬性name的類型 
  19.         Field name = cls.getDeclaredField("name"); 
  20.         //獲取詳細(xì)信息 
  21.         System.out.println(name.getType().getName()); 
  22.         //獲取簡略信息 
  23.         System.out.println(name.getType().getSimpleName()); 
  24.     } 

結(jié)果:

  1. java.lang.String  String 

 

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2021-03-18 10:57:42

物聯(lián)網(wǎng)IoT

2023-03-07 14:58:37

數(shù)字孿生自動化

2015-04-20 11:12:14

2022-02-21 16:00:39

Web3中心化互聯(lián)網(wǎng)

2017-10-17 12:43:17

前端CSS布局

2022-09-19 11:53:17

5G智慧城市

2015-09-23 12:22:56

首席安全官IT薪酬

2012-08-30 09:44:27

2022-07-12 15:23:38

勒索軟件網(wǎng)絡(luò)攻擊

2020-10-14 09:46:33

Spring MVC接口漏洞

2017-06-26 10:18:43

2025-01-16 15:44:04

2021-08-27 10:14:22

機(jī)器學(xué)習(xí)工具手冊人工智能

2021-06-28 08:39:04

外包職位企業(yè)

2025-09-03 07:18:07

2022-09-26 10:56:28

人工智能數(shù)字孿生

2012-04-05 13:50:38

Java

2020-11-23 08:21:02

CTO交流學(xué)習(xí)

2018-09-27 10:20:41

2019-04-28 11:06:01

Hbase架構(gòu)程序員
點贊
收藏

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

日本精品在线一区| 黑鬼大战白妞高潮喷白浆| 天堂√8在线中文| 一区二区三区久久| 日本午夜精品一区二区| 欧美日韩一区二区三区在线电影 | 久久精品免费电影| 国内精品久久久久久野外| 国产精品午夜电影| 在线视频福利一区| 亚洲欧美网站在线观看| 欧美激情亚洲一区| 亚洲一级少妇| 91精品国产综合久久福利| 超碰96在线| 中文字幕一区二区三中文字幕| 日韩精品第1页| 好看不卡的中文字幕| 欧美在线性爱视频| 日韩一二三区| 中文字幕国产精品| 青青草视频在线免费直播| 午夜欧美视频在线观看| 国产福利在线免费| 久久久久亚洲蜜桃| 国产91在线免费| 国产一区二区三区在线观看免费 | 国内一区二区三区在线视频| av日韩在线播放| 在线观看精品自拍私拍| 牛牛在线精品视频| 日韩女优av电影在线观看| 在线免费观看的av网站| 一本色道久久加勒比精品| 国产乱xxⅹxx国语对白| 国产精品美女久久久久高潮| 亚洲中文字幕无码专区| 粉嫩aⅴ一区二区三区四区| 综合久久国产| 国内成人精品2018免费看| 伊人久久青草| 精品无人区卡一卡二卡三乱码免费卡 | 欧美一区二三区| 亚洲国产一区二区三区网站| 久久视频国产精品免费视频在线 | 亚洲va韩国va欧美va精品| 欧美jiizzhd精品欧美| 亚洲三级电影全部在线观看高清| www亚洲天堂| 亚洲四区在线观看| 视频免费观看| 一本色道a无线码一区v| 尤物视频在线免费观看| 欧美一区日本一区韩国一区| 日本精品600av| 日韩av网站导航| 欧美xoxoxo| 中文字幕欧美在线| 欧美日韩中出| 欧美一级电影在线| 久久精品高清| 九色91视频| 国产乱子轮精品视频| 玩弄japan白嫩少妇hd| 国产精品久99| 色视频在线看| 欧美成人精品1314www| 免费成人直播| 国产91成人在在线播放| 久久福利影院| 久久久精品动漫| 国产一区999| 韩国视频一区二区三区| 亚洲www啪成人一区二区麻豆| 免费网站看v片在线a| 亚洲精品日韩在线| 一区二区三区在线资源| 国产精品天天狠天天看| 久久亚洲影院| 欧美日韩国产精品激情在线播放| 综合中文字幕亚洲| 国产专区在线| 精品中文字幕久久久久久| 欧美激情三级| 国产a一区二区| 99精品欧美一区| 日本成人一区| 亚洲欧洲自拍偷拍| 欧美一二区在线观看| 亚洲 国产 日韩 综合一区| 欧美激情在线一区二区| 无遮挡动作视频在线观看免费入口| 亚洲日本aⅴ片在线观看香蕉| 亚洲人成亚洲精品| 日韩欧美在线电影| 国产精品乱码一区二三区小蝌蚪| av福利在线播放| 欧美xxxx综合视频| 激情一区二区| 亚洲中文字幕无码不卡电影| 色狠狠av一区二区三区| 精品免费av一区二区三区| 国产精品视频资源| 国产精品羞羞答答xxdd| 伪装者免费全集在线观看| 亚洲一级黄色av| 欧美jjzz| 欧美18 19xxx| 亚洲视频第一页| 午夜国产欧美理论在线播放 | 亚洲精品欧美精品| 亚洲狼人国产精品| 日本乱码一区二区三区不卡| 日韩美女免费线视频| 久久99热国产| 免费在线视频一级不卡| 欧美乱大交xxxxx另类电影| 亚洲欧美日韩国产综合精品二区 | 欧美变态另类刺激| 欧美巨大另类极品videosbest | 日本成人福利| 亚洲aa在线观看| 91在线观看高清| 18视频在线观看| 国产精品电影网站| av在线不卡电影| av网站大全在线| 国产精品一区二区电影| 久久蜜臀精品av| 我爱我色成人网| 手机成人在线| 91成人免费网站| 欧州一区二区| 天天影视色香欲综合网天天录日日录| 亚洲国产欧美一区| 中文日韩在线| 成人免费视频| 国产精品极品美女粉嫩高清在线| 91在线视频观看| 欧美日韩美女| 亚洲精品一区二区三区四区五区| 亚洲va欧美va人人爽| 欧美日韩导航| 99sesese| 97免费视频在线| 国产亚洲欧美日韩俺去了| 欧美xnxx| 欧美一级视频免费看| 亚洲跨种族黑人xxx| 日本美女一区二区| 午夜av在线免费观看| 蜜桃91精品入口| 777午夜精品视频在线播放| 亚洲福利一区| 婷婷在线视频观看| 精品无人乱码一区二区三区的优势| 五月天丁香久久| 亚洲大全视频| av资源网站在线观看| 国产精品日韩一区二区三区| 色婷婷综合激情| 欧美日韩国产探花| 3p在线观看| 久久免费视频1| 日韩欧美国产一区二区三区| 日本成人中文字幕在线视频| heyzo在线欧美播放| 中文字幕中文字幕在线中心一区| 日韩精品视频在线观看网址| 久久99国产精品免费| 老司机2019福利精品视频导航| 久久久久亚洲av无码专区喷水| 亚洲欧美国产视频| 国产成人av资源| 国产免费av国片精品草莓男男| 黄色av免费在线播放| 91高潮精品免费porn| 亚洲国产精品人人做人人爽| 亚洲视频高清| 3344国产永久在线观看视频| 欧美一二三不卡| 欧美xxxx做受欧美| 亚洲精品精品亚洲| 欧美1级日本1级| 成人爽a毛片免费啪啪动漫 | 欧美午夜不卡在线观看免费| a91a精品视频在线观看| 欧美精品videossex少妇| 国产精品日韩三级| 久久久久久欧美| 精品动漫一区二区三区| 久久一区二区三区四区五区| 影音成人av| 福利电影导航| 国产精品一区二| 伊人久久精品视频| 亚洲精品中文在线影院| 99香蕉国产精品偷在线观看| 欧洲亚洲精品久久久久| 九九99九九精彩|