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)框架