Java反射机制

1.反射的概念
2.反射的作用
3.反射的具体例子

4.总结

1.
反射指的是程序可以访问、检测和修改它本身状态和行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。

2.
作用1:原来的.class 文件可以转换为.java文件。
作用2:通过反射机制可以访问java对象的属性,方法和构造方法等。

3.
首先了解一下常见的反射机制中的类:

java.lang.Class;
java.lang.reflect.Constructor;
java.lang.reflect.Field;
java.lang.reflect.Method;
java.lang.reflect.Modifier;

1.反射机制获取类的三中方法:(以获取student为例)

//第一种方式

Calss  c1 = Class.forName("student");

//第二种方式(java中每个类都有class属性)

Class c2 = student.class;

//第三种方式
//java语言中任何一种语言都有getClass方法

Student = new student();
Student c3  = e.getClass();//c3是运行时的类,e的运行时类是student

2.创建对象:获取类以后我们可以用来创建它的对象,利用new Instance。

Class c = Class.forName("Employee");
//创建此Class对象所表示的类一个新实例
Object to = c.newInstance(); //调用了student的无参构造方法。

3.获取属性(获取所有的属性和特定的属性)

①:
获取所有的属性
使用getDeclaredFields()方法。

获取属性的修饰符
使用getModifiers()方法。

②:
获取特定的属性

public static void main(String[] args)throws Exception{
   //以前的方式
   User u = new User();
   u.age = 12;
   System.out.print(u.age);
 
  //利用反射机制
  //获取类
  Class c = Class.forName("user");
  //获取id属性
  Class idf = c.getDeclaredField("id");
  //实例化这个类赋值给b
  Object b = c.newInstance();
  //打破封装
  idf.getAccessible(true);
  给b对象的id属性赋值11
  idf.set(b,"11");
  System.print.out("idf.get(b)");
}

4.

java的反射机制提供了很多功能,比如在运行时可以判定任意一个对象所属的类,可以构造任意一个类的对象,可以判定任意一个类所具有的成员变量和方法,可以调用任意一个对象的方法,生成动态代理。

当我们需要逆向代码即反编译时、动态生成类框架时、与注解相结合框架时、应用于单纯的反射机制应用框架时可以使用反射机制。

应用反射机制时的性能是一个问题,反射相当于一系列解释操作,通知jvm要做的事情,性能比直接的java代码要慢很多。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值