简单理解java中的反射机制

反射机制:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

1.首先我们要了解java中的Class类:
其实每当我们编写并编译一个类时,JVM就会创建这个类对应的Class类对象,记录着该类的相关类型信息;并且这个Class对象会保存在同名.class文件里(编译后的字节码文件保存的就是Class对象);
比如Shapes类,它的Class对象保存在Shapes.class里
Shapes类的所有对象,共用一个它的Class对象

在这里插入图片描述

2.获取对应类的Class方式
(1)Class c=对象.getClass()

  • A a=new A();
  • Class c=a.getClass();

(2)Class c=类名.Class()

  • Class c=A.Class();

(3)Class c=Class.forName(“类名全路径”)

3.Class类中的常见用方法
一.与构造方法有关的:Constructor类
(1)static Class forName(String className)
(2)newInstance()
在这里插入图片描述

演示用法:实例化的几种方式
(1)默认构造方法

Class c= Class.forName("com.pojo.Student");
Student  student=c.newInstance();
设置成员值

(2)获取带String 参数 public 的构造方法

Class c= Class.forName("com.pojo.Student");
Constructor  cs=c.getConstructor(String.Class)
Student  student=cs.newInstance("wanlong");

(3)获取带int参数,String参数,private的构造方法

Class c= Class.forName("com.pojo.Student");
Constructor  cs=c.getDeclaredConstructor(int.Class,String.Class)
//由于是private,必须设置可以访问
cs.setAccessible(true);
Student  student=cs.newInstance("wanlong");

其他就不演示了:

二:与成员有关的:Field类

在这里插入图片描述
演示:

	Class c=Class.forName("com.pojo.Student");
	//获取成员变量为name且public
	Field    Fname=c.getField("name");    
	//获得所有成员变量且public    (包含父类) 
	Field []  fields=c.getField();
	其他就不演示了;同理

	给字段赋值
	Student  student=c.newInstance();
	Fname.set(student,"wanlong");
	

三:与方法有关的类:Method
在这里插入图片描述

演示:

Class  c=Class.forName("com.pojo.Student");
//获得方法名为add ,参数为int,String类型   public的方法
Method addMethod=c.getMethod("add",int.Class,String.Class);
其他同理:不演示

调用方法
Student  student=c.newInstance();
addMethod.invote(student,"1","wanlong");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值