java反射機制是在運行狀態中,對於任意一個類,都可以知道這個類的全部屬性和方法;對於任意一個對象,都可以調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱爲Java語言的反射機制。java
有些時候,咱們用過一些知識,可是並不知道它的專業術語是什麼,在剛剛學jdbc時用過一行代碼,
Class.forName(「com.mysql.jdbc.Driver.class」).newInstance();可是那時候只知道那行代碼是生成
驅動對象實例,並不知道它的具體含義。聽了反射機制這節課後,才知道,原來這就是反射,如今不少開
框架都用到反射機制,hibernate、struts都是用反射機制實現的。mysql
反射API用來生成JVM中的類、接口或則對象的信息。
– Class類:反射的核心類,能夠獲取類的屬性,方法等信息。
– Field類:Java.lang.reflec包中的類,表示類的成員變量,能夠用來獲取和設置類之中的屬性值。
– Method類: Java.lang.reflec包中的類,表示類的方法,它能夠用來獲取類中的方法信息或者執行方法。
– Constructor類: Java.lang.reflec包中的類,表示類的構造方法。sql
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)框架