java反射技術

AskHarries發表於2018-05-03

一、什麼是JAVA反射技術?

java反射機制是在執行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個物件,都能夠呼叫它的任意一個方法和屬性;這種動態獲取的資訊以及動態呼叫物件的方法的功能稱為Java語言的反射機制。

二、反射一般在哪方便有運用?

有些時候,我們用過一些知識,但是並不知道它的專業術語是什麼,在剛剛學jdbc時用過一行程式碼,
Class.forName(“com.mysql.jdbc.Driver.class”).newInstance();但是那時候只知道那行程式碼是生成
驅動物件例項,並不知道它的具體含義。聽了反射機制這節課後,才知道,原來這就是反射,現在很多開
框架都用到反射機制,hibernate、struts都是用反射機制實現的。

三、Java反射API

反射API用來生成JVM中的類、介面或則物件的資訊。
Class類:反射的核心類,可以獲取類的屬性,方法等資訊。
Field類:Java.lang.reflec包中的類,表示類的成員變數,可以用來獲取和設定類之中的屬性值。
Method類: Java.lang.reflec包中的類,表示類的方法,它可以用來獲取類中的方法資訊或者執行方法。
Constructor類: Java.lang.reflec包中的類,表示類的構造方法。

四、使用反射的步驟

  • 獲取想要操作的類的Class物件
  • 呼叫Class類中的方法
  • 使用反射API來操作這些資訊

五、程式碼示例

package org.java.base.reflection;

public class Person {
 private String name;
 private String gender;
 private int age;

 public Person() {

 }
 public Person(String name, String gender, int age) {
 this.name = name;
 this.gender = gender;
 this.age = age;
 }
 //getter和setter方法
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public String getGender() {
 return gender;
 }
 public void setGender(String gender) {
 this.gender = gender;
 }
 public int getAge() {
 return age;
 }
 public void setAge(int age) {
 this.age = age;
 }

 public String toString(){
 return "姓名:"+name+" 性別:"+gender+" 年齡:"+age;
 }

}複製程式碼
package org.java.base.reflection;

public class Person {
 private String name;
 private String gender;
 private int age;

 public Person() {

 }
 public Person(String name, String gender, int age) {
 this.name = name;
 this.gender = gender;
 this.age = age;
 }
 //getter和setter方法
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public String getGender() {
 return gender;
 }
 public void setGender(String gender) {
 this.gender = gender;
 }
 public int getAge() {
 return age;
 }
 public void setAge(int age) {
 this.age = age;
 }

 public String toString(){
 return "姓名:"+name+" 性別:"+gender+" 年齡:"+age;
 }

}複製程式碼

輸出結果

方法:public java.lang.String org.java.base.reflection.Person.toString()
方法:public java.lang.String org.java.base.reflection.Person.getName()
方法:public void org.java.base.reflection.Person.setName(java.lang.String)
方法:public void org.java.base.reflection.Person.setGender(java.lang.String)
方法:public int org.java.base.reflection.Person.getAge()
方法:public void org.java.base.reflection.Person.setAge(int)
方法:public java.lang.String org.java.base.reflection.Person.getGender()
屬性:private java.lang.String org.java.base.reflection.Person.name
屬性:private java.lang.String org.java.base.reflection.Person.gender
屬性:private int org.java.base.reflection.Person.age
構造方法:public org.java.base.reflection.Person()
構造方法:public org.java.base.reflection.Person(java.lang.String,java.lang.String,int)

java反射技術



相關文章