Java反射機制的使用方法



Java的反射機制同意你在程序執行的過程中獲取類定義的細節。有時候在程序執行的時候才得知要調用哪個方法,這時候反射機制就派上用場了。




獲取類

類的獲取方法有下面幾種:

  • ? ?forName()。通過Class.forName()獲取與字符串向相應的類。

    比方\lstinline{Class.forName("java.lang.String");}。

  • ? ?getClass()。每一個對象都有這種方法。比方\lstinline{Foo foo; ...; foo.getClass();}。
  • ? ?類名.class。直接通過類名獲取這個類的反射對象。比方String.class。
  • ? ?基本類型的類。

    比方Integer.TYPE。

    這樣的方法與Integer.class是由差別的。一個是基本類型(Primitive type)。一個是復合類型(Composition)。


獲取構造函數

獲取構造函數由下面幾種方法:

  • ? ?getConstructor(Class[] params)。獲取公共的構造函數。

  • ? ?getConstructors()
  • ? ?getDeclaredConstructor(Class[] params)。獲取全部構造函數。
  • ? ?getDeclaredConstructors()


獲取構造函數之后能夠通過newInstance生成一個新的實例。


獲取字段

獲取字段的方法有下面幾種:
  • ? ?getField(String name)。獲取公共的字段。
  • ? ?getFields()。

  • ? ?getDeclaredField(String name)。獲取全部的字段。
  • ? ?getDeclaredFields()

獲取字段之后能夠通過getDouble getInt等方法獲取變量的值。也能夠通過setDouble setInt等方法給變量賦值。


獲取成員方法

獲取方法的方法有下面幾種:

  • ? ?getMethod(String name, Class[] params)。獲取公共的方法。

  • ? ?getMethods()
  • ? ?getDeclaredMethod(String name, Class[] params)。

    獲取全部的方法。

  • ? ?getDeclaredMethods()


獲取成員方法之后能夠調用invoke方法運行該方法。


數組


數組也是一個特殊的類型,因此Java中提供了java.lang.reflect.Array實現數組的動態操作。創建一個數組能夠調用newInstance(type, count)方法,獲取一個元素能夠通過get(array, index)。

轉載于:https://www.cnblogs.com/zfyouxi/p/5123947.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257827.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257827.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257827.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

銀行計算機設備日常檢查表,[計算機]201154安全檢查表.doc

[計算機]201154安全檢查表土建基礎框架施工檢查表編號:2011-03-01-11工程名稱鑄造車間檢查時間2011 年 月 日檢查部位基礎施工檢 查 人檢 查結 論百分制折合分數:需要整改共 條。受檢單位河南周口受檢責任人檢 查 內 容檢查項目檢查內容和安全文明施工要…

我為什么要寫FansUnion個人官網-BriefCMS-電子商務malling等系統

不少朋友一直關注我最近幾個月,已經做的和正在做的項目,比如個人官網、BriefCMS、電子上午malling等系統。但是呢,部分朋友比較好奇,為啥要去寫。他們比較疑惑的是,市面上已經有很多類似的系統了,甚至有部分…

Node開發文件上傳系統及向七牛云存儲和亞馬遜AWS S3的文件上傳

背景起,有奏樂: 有偉人曰:學習技能的最好途徑莫過于理論與實踐相結合。 初學Node這貨時,每每讀教程必會Fall asleep。 當真要開發系統時,頓覺精神百倍,即便踩坑無數也不失斗志。 因為同團隊的小伙伴們都在辛…

計算機學業水平考試及格,信息技術學業水平考試表格部分試題(帶答案)

第三章表格信息的加工與表達復習學案【學習目標】1.熟練使用excel加工表格信息,理解用圖表來表現信息的特點與意義,2.能根據表格數據關系選擇合適的圖表類型表達意圖。【考點】1.表格中常用的函數及其求值方法;2.根據數據選擇合適的圖表類型&…

Ok6410掛載NFS

虛擬機: apt-get install portmap apt-get install nfs-kernel-server mkdir /nfs/root/mNFS chmod 777 /nfs chmod 777 /nfs/root vi /etc/exports 添加:/nfs/root *(rw,sync,no_root_squash) 開發板: mount -t nfs 192.168.0.12…

云計算:容器技術變革云計算,SaaS帶動CaaS市場

報告摘要: 1、容器技術增速驚人,市場認可度提高 虛擬化是云計算的重要基礎,Docker定義了一套容器從構建到執行的標準化體系,改變了傳統的虛擬化技術,深度影響了云計算領域。 隨著谷歌、亞馬遜、微軟等云計算廠商紛紛加…

Jan 12 - Delete Node in a Linked List; Data Structure; Linked List; Pointer;

代碼: /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val x; }* }*/ public class Solution {public void deleteNode(ListNode node) {if(node null) return;while(node.next ! …

三年級神奇電子計算機教案,人教版小學三年級下冊信息技術教案

人教版小學三年級下冊信息技術教案 人教版小學信息技術教案第一課 神奇的信息世界教學目的:通過學習使學生更充分地了解信息技術在生活中的應用。教學內容:觀看“神奇的信息世界”光碟教學準備:1、調試每臺計算機 2、打開計算機并由教師機控制…

spark 安裝配置

最佳參考鏈接 https://opensourceteam.gitbooks.io/bigdata/content/spark/install/spark-160-bin-hadoop26an_zhuang.html Apache Spark1.1.0部署與開發環境搭建   Spark是Apache公司推出的一種基于Hadoop Distributed File System(HDFS)的并行計算架構。與MapReduce不同&am…

《大數據原理:復雜信息的準備、共享和分析》一一2.5 在標識符中嵌入信息:不推薦...

2.5 在標識符中嵌入信息:不推薦大多數標識符不是純粹的隨機數,它們通常含有一些可由熟悉標識系統的人解釋的嵌入信息。例如,標識符中可以嵌入姓的前三個字母,同樣,標識符中也可以嵌入出生年份的最后兩位數字。標識符中…

python基礎知識-列表,元組,字典

列表(list) 賦值方法: l [11,45,67,34,89,23] l list() 列表的方法: 1 #!/usr/bin/env python2 3 class list(object):4 """5 list() -> new empty list6 list(iterable) -> new list initial…

車站計算機聯鎖系統的仿真設計,車站計算機聯鎖仿真設計.doc

車站計算機聯鎖仿真設計2012 屆 交通運輸 學院專 業學 號 2008學生姓名指導教師完成日期 2012年 月日計算機聯鎖是保證車站內列車和調車作業安全,提高車站通過能力的一種信號設備。設計以沙盤模型為根據,練習制作聯鎖信號圖表,使用Visual Bas…

如何解決機器學習中的數據不平衡問題?

在機器學習任務中,我們經常會遇到這種困擾:數據不平衡問題。 數據不平衡問題主要存在于有監督機器學習任務中。當遇到不平衡數據時,以總體分類準確率為學習目標的傳統分類算法會過多地關注多數類,從而使得少數類樣本的分類性能下降…

ubuntu每次登陸都用root賬號登陸

sudo -s 進入 root 用戶權限模式 vi /etc/lightdm/lightdm.conf [SeatDefaults] greeter-sessionunity-greeter user-sessionUbuntu greeter-show-manual-logintrue allow-guestfasle 重啟后再登陸就會 直接用root登陸了 版權聲明:本文為博主原創文章,未…

js-BOM

私有變量: 1、在一個實例上調用setName()會影響所有的實例 BOM: 1、全局變量不能通過delete操作符刪除,而直接在window對象上定義的屬性可以 2、嘗試訪問為聲明的變量會拋出錯誤,但通過查詢window對象&…

計算機組成實驗v代表什么,2014計算機組成原理實驗指導V1.3.docx

文檔介紹:實驗一運算器組成實驗實驗目的熟悉Logisim軟件平臺。掌握運算器基本工作原理掌握運算溢出檢測的原理和實現方法;理解有符號數和無符號數運算的區別;理解基于補碼的加/減運算實現原理;熟悉運算器的數據傳輸通路。實驗環境Logisim是一款數字電路模擬的教育軟…

四大技巧輕松搞定云容器

云容器技術,作為傳統虛擬化管理程序的一種替代品,正稱霸著云市場。容器是輕量級的,并提供增強的便攜性,允許應用在平臺之間遷移,而不需要開發者重做或重新架構應用。但是,盡管其好處讓開發人員感到驚嘆&…

Android 圖文混排 通過webview實現并實現點擊圖片

在一個開源項目看到是用的webview 實現的 1. 這是在asset中的一個模板html <html> <head> <title>News Detail</title> <meta name"viewport" content"widthdevice-width, minimum-scale0.5, initial-scale1.2, maximum-scale2.0…

h5engine造輪子

基于學習的造輪子&#xff0c;這是一個最簡單&#xff0c;最基礎的一個canvas渲染引擎&#xff0c;通過這個引擎架構&#xff0c;可以很快的學習canvas渲染模式&#xff01; 地址&#xff1a;https://github.com/RichLiu1023/h5engine 這是一個比較有意思的h5渲染引擎&#xff…

計算機硬件選型報價,組裝電腦硬件該怎么選擇?這幾個硬件要舍得花錢,千萬別買錯了!...

原標題&#xff1a;組裝電腦硬件該怎么選擇&#xff1f;這幾個硬件要舍得花錢&#xff0c;千萬別買錯了&#xff01;組裝電腦是多硬件組合的產物&#xff0c;每一個硬件對于電腦的性能都是有影響的&#xff0c;影響的大小與電腦的硬件有直接關系&#xff0c;有些硬件就要舍得花…