java反射技术

timg一、什么是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)

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » java反射技术

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址