java反射技術

1、什麼是JAVA反射技術?

java反射機制是在運行狀態中,對於任意一個類,都可以知道這個類的全部屬性和方法;對於任意一個對象,都可以調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱爲Java語言的反射機制。java

2、反射通常在哪方便有運用?

有些時候,咱們用過一些知識,可是並不知道它的專業術語是什麼,在剛剛學jdbc時用過一行代碼,
Class.forName(「com.mysql.jdbc.Driver.class」).newInstance();可是那時候只知道那行代碼是生成
驅動對象實例,並不知道它的具體含義。聽了反射機制這節課後,才知道,原來這就是反射,如今不少開
框架都用到反射機制,hibernate、struts都是用反射機制實現的。mysql

3、Java反射API

反射API用來生成JVM中的類、接口或則對象的信息。
Class類:反射的核心類,能夠獲取類的屬性,方法等信息。
Field類:Java.lang.reflec包中的類,表示類的成員變量,能夠用來獲取和設置類之中的屬性值。
Method類: Java.lang.reflec包中的類,表示類的方法,它能夠用來獲取類中的方法信息或者執行方法。
Constructor類: Java.lang.reflec包中的類,表示類的構造方法。sql

4、使用反射的步驟

  • 獲取想要操做的類的Class對象
  • 調用Class類中的方法
  • 使用反射API來操做這些信息

5、代碼示例

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;
 }

}複製代碼

輸出結果bash

方法: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)框架

相關文章
相關標籤/搜索