转载

java反射技术

一、什么是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反射技术

原文  https://juejin.im/post/5aea9482518825671c0e638f
正文到此结束
Loading...