java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。
有些时候,我们用过一些知识,但是并不知道它的专业术语是什么,在刚刚学jdbc时用过一行代码,
Class.forName(“com.mysql.jdbc.Driver.class”).newInstance();但是那时候只知道那行代码是生成
驱动对象实例,并不知道它的具体含义。听了反射机制这节课后,才知道,原来这就是反射,现在很多开
框架都用到反射机制,hibernate、struts都是用反射机制实现的。
反射API用来生成JVM中的类、接口或则对象的信息。
– Class类 :反射的核心类,可以获取类的属性,方法等信息。
– Field类 :Java.lang.reflec包中的类,表示类的成员变量,可以用来获取和设置类之中的属性值。
– Method类 : Java.lang.reflec包中的类,表示类的方法,它可以用来获取类中的方法信息或者执行方法。
– Constructor类 : Java.lang.reflec包中的类,表示类的构造方法。
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)