Java基礎增強篇一,Java核心功能反射機制

2020-12-11 微侗家

Java反射機制

1. java代碼

在 java 語言中最核心的就是代碼的運行, 按照面向對象的思想,在調用java代碼時往往需要先創建對象,再調用方法, 而寫在方法中的即所謂的java 代碼

先分析Class對象的圖解:

一段java代碼在程序運行期間會經歷三個階段: source-->class-->runtime

2. Class 對象

在java中用一個Class對象來表示一個java類的class階段,Class對象封裝了一個java類中定義的成員變量、成員方法、構造方法、類名、包名等。

獲得class對象的三種方式和區別

// 1. 根據給定的類名來獲得 用於類加載

// 來自配置文件

String classname = "cn.itcast.reflect.Person";

// 此對象代表Person.class

Class clazz = Class.forName(classname);

// 2. 如果拿到了對象,不知道是什麼類型 用於獲得對象的類型

Object obj = new Person();

// 獲得對象具體的類型

Class clazz1 = obj.getClass();

//java對象的比較不能用==,而是用equals,但是,有一個對象除外Class

If(clazz1 == Person.class)

// 3. 如果是明確地獲得某個類的Class對象 主要用於傳參

Class clazz2 = Person.class;

// 在java中所有的類型都會對應一個Class對象 int Integer

Class intClazz = int.class;

Class intarrClazz = int[].class;

Class voidClazz = void.class;

3. 反射的概念

反射就是獲得一個java類的各個組成部分

// 反射類的成員方法

Class clazz = Person.class;

Method method = clazz.getMethod(methodName, new Class[]{paramClazz1,paramClazz2});

method.invoke();

// 反射類的構造函數

Constructor con = clazz.getConstructor(new Class[]{paramClazz1,paramClazz2,...})

con.newInstance(params...)

// 反射類的屬性

Field field = clazz.getField(fieldName);

field.setAccessible(true);

field.setObject(value);

4. 反射用在哪裡?

到底框架是什麼? 框架就是將開發中大量重複的代碼集中起來寫個通用的程序

框架就是用反射來實現的

框架需要現在的類調用將來寫的類

框架是將來的程式設計師調用的,框架不能實現完整的功能,框架只是一些一些通用的代碼

框架要運行一定會依賴將來寫的類

現在寫的類要調用將來寫的類,我們先針對接口進行調用,將來的類需要實現接口,那麼方法就固定了

但是將來寫的類的類名我們無法獲知,這時就需要調用者通過配置文件告訴框架具體的類名

歡迎關注,獲得更多資料

相關焦點

  • 說說Java的反射機制
    一、什麼是反射動態獲取類的信息以及動態調用對象的方法稱為Java的反射(Reflection)機制。反射提供了封裝程序集、模塊和類型的對象。在Java運行時環境中,對於任意一個類的對象,可以通過反射獲取這個類的信息。
  • Java高級特性:反射機制
    概述JAVA反射機制:在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意方法和屬性;這種動態獲取信息以及動態調用對象方法的功能稱為java語言的反射機制。
  • Java面試高頻考點:反射機制使用大全
    作為一個Java開發工程師,在面試的過程中,反射機制也是經常會被問到的一個問題。例如Spring的IOC實現機制,其底層都是依賴於java的反射機制,因此,這是一個非常重要的知識點。對於初學java的同學來說,掌握其使用方法很有必要。
  • 程式設計師:什麼是Java反射機制,有什麼作用
    什麼是Java反射機制?Java反射機制是 Java 語言的一個重要特性,它在伺服器程序和中間件程序中得到了廣泛運用。在伺服器端,往往需要根據客戶的請求,動態調用某一個對象的特定方法。此外,在 ORM 中間件的實現中,運用 Java 反射機制可以讀取任意一個 JavaBean 的所有屬性,或者給這些屬性賦值通過反射機制,可以在運行的時候訪問到對象的屬性、方法、構造方法等等哪些地方用到反射機制?其實我們都用過反射機制,只是並不知道它是反射機制而已。
  • java如何通過反射調用方法
    java是一門面向對象的軟體開發語言。大家用java來開發軟體系統,自然是離不開構建對象,執行對象的方法。有時候也會執行類的靜態方法。java創建對象除了new,還有其他辦法嗎?》這篇文章的朋友可能會說,怎麼感覺是一個套路啊。
  • 如何使用JAVA反射/JAVA反射實例
    JAVA反射技術,在平時我們的開發中雖然很少會用到例如讀取配製文件可能就用到這個技術,但在我們所使用的框架源碼中是經常會用到的。2、反射如何操作對象:package com.test.instancedemo ;class Person{ private String name ; // name屬性 private int age ;  //
  • JAVA的反射,你需要了解
    JAVA的反射,是JAVA的核心技術要點。有很多我們耳熟能詳的框架、api,其底層就是使用了java反射功能來實現的。比如jdbc加載不同的資料庫驅動,spring容器加載對象,idea的提示等等。那麼,究竟什麼是JAVA 的反射呢?JAVA反射又是怎樣實現上述功能的呢?一、什麼是JAVA反射?
  • 強烈推薦:Java的反射機制和使用你們都知道嗎?
    Java中的反射機制和使用想必大家都不是很了解,今天我就和大家一起來認識和學習這些知識點吧,發射這個詞相信大家平時學習時用的不多但聽的很多,特別是在各種開源框架中,很多框架都用到反射機制,hibernate,struts ,spring等框架都是用反射機制實現的。
  • 一起學JAVA——反射技術
    反射技術是java動態特性的基石,java之所以有很多開發框架就是因為反射技術的存在。什麼是反射JAVA反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。
  • 阿里P8教你Java註解與反射
    Ⅰ 什麼是註解Java 註解(Annotation)又稱 Java 標註,是 JDK5.0 引入的一種注釋機制。Java 語言中的類、方法、變量、參數和包等都可以被標註。和 Javadoc 不同,Java 標註可以通過反射獲取標註內容。在編譯器生成類文件時,標註可以被嵌入到字節碼中。
  • Java反射:框架設計的靈魂
    靜態語言:相對於動態語言來說,在編譯時變量的數據類型就已經確定(使用變量之前必須聲明數據類型),在編譯時就會進行類型是否匹配;比如 C 語言、Java ;03.反射的概念Java 反射機制:在運行過程中,對於任意一個類,都能知道其所有的屬性和方法;對於任意一個對象,都能調用其屬性和方法;這種動態獲取類信息和調用對象方法的功能
  • Java反射,泛型在Json中的運用
    最近項目中遇到了Json數據自動獲取的功能,不然令人想起java的反射,已經很長時間沒複習java了正好一塊連java的這一塊內容一起過一遍。java中的反射無疑就相當於java開發者的春天,在眾多的框架中也能看到它的身影,可以在運行時檢查類,接口、變量和方法等信息,可以實例化調用方法以及設置變量值等。本文主要以代碼的形式直接將反射,泛型的運用展現出來。java中的反射首先新建一個基礎類Author。
  • 深入理解java中的泛型機制
    想要學好java,泛型機制是一個必須要掌握的知識點,無奈很多書上寫的不是很囉嗦,就是概念太多難以理解,因此參考了很多篇文章,對其進行整理了一下,希望對你有所幫助。一、認識泛型1、為什麼要引入泛型?泛型其實是在jdk1.5中才添加的。
  • 給Java新手的一些建議——Java知識點歸納(Java基礎部分)
    寫這篇文章的目的是想總結一下自己這麼多年來使用java的一些心得體會,主要是和一些java基礎知識點相關的,所以也希望能分享給剛剛入門的Java程式設計師和打算入Java開發這個行當的準新手們,希望可以給大家一些經驗,能讓大家更好學習和使用Java。這次介紹的主要內容是和J2SE相關的部分,另外,會在以後再介紹些J2EE相關的、和Java中各個框架相關的內容。
  • 「零基礎學JAVA」基礎篇 第二章 JAVA編程初體驗
    JAVA【零基礎學編程】系列今天給大家帶來基礎篇 第二章 JAVA編程初體驗本節的部分編碼操作需要先安裝JDK開發工具;}}保存以後,我們右鍵它選擇重命名將文件的後綴「.txt」改成「.java」同時按住Win和R鍵,桌面左下角彈出『運行』窗口,輸入cmd,再回車。
  • 反射——Java高級開發必須懂得
    我們只提供了Word類和相應方法,並對它進行編譯(這是因為只使用Word的功能),這時候再對Office這個類進行編譯,這時候只報Excel找不到的錯誤,現在核心問題是只想使用Word,而不使用Excel這個類,但是報錯(這樣就不能運行,導致不能使用Word的功能),因為new 對象是靜態加載類的方式,在編譯時刻就需要加載所有可能使用到的類
  • JAVA反序列化 - commons-collections - 1
    如果你具備了反射機制和反序列化基本原理的知識,同時想學習cc鏈的話,個人感覺是這篇文是再適合不過了。那麼開始。了解反射機制的話,我們會發現若存在一個固有的反射機制時,輸入可控,就可能形成任意函數調用的情況,具有極大的危害。
  • get新技能,Java的Class與反射機制原理,讓你寫出更靈活的代碼
    代碼臃腫一般都是為了一些簡單的功能快速上線,一直往裡面堆功能性或兼容性的代碼,這就是一直在做加法,但優秀的程式設計師應該學會做減法,時不時檢查一下自己的代碼是否存在冗餘和無用的功能性代碼。而關於代碼的靈活性那就更有的說了,今天就來帶大家來聊聊關於這方面的技術點:反射機制。
  • 新手學Java編程應該學那些Java基礎知識
    JVM作為java運行的基礎,很難相信對於JVM一點都不了解的人可以把java語言吃得很透。我在面試有超過3年Java經驗的開發者的時候, JVM幾乎就是一個必問的問題了。當然JVM不是唯一決定技術能力好壞的面試問題,但是可以佐證java開發能力的高低。
  • 零基礎java入門-認識java
    1計算機基礎知識針對零基礎學習的人,從對計算機操作等知識的了解,延伸到Java語言的發展與開發工具的使用上。主要是讓你知道怎樣執行計算機命令,認識Java這門語言,感受程式語言Java怎麼開發程序。1) 計算機基礎讓零基礎學習的人先了解計算機相關知識,進而再去了解Java語言。