反射机制

反射机制

ps:
  Java的反射机制是Java特性之一,反射机制是构建框架技术的基础所在。灵活掌握Java反射机制,对大家以后学习框架技术有很大的帮助。

  • 什么是Java的反射呢?

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

  反射机制常被用于不确定是什么类被加载的时候, 动态得操作类的属性和方法。比如:工具类的中需要获取类的属性和方法。

  • 自审: Java的反射机制可以获得类的基本结构

Class类

要正确使用Java反射机制就得使用java.lang.Class这个类。它是Java反射机制的起源。
当一个类被加载以后,Java虚拟机就会自动产生一个Class对象。通过这个Class对象我们就能获得加载到虚拟机当中这个Class对象对应的方法、成员以及构造方法的声明和定义等信息。

功能
—获取一个对象的类信息.

  1. —获取一个类的访问修饰符、成员、方法、构造方法以及父类的信息.
  2. —检获属于一个接口的常量和方法声明.

  3. —创建一个直到程序运行期间才知道名字的类的实例.

  • 优点:利用Java反射机制我们可以很灵活的对已经加载到Java虚拟机当中的类信息进行检测。
  • 缺点:当然这种检测在对运行的性能上会有些减弱,

所以什么时候使用反射,就要靠业务的需求、大小,以及经验的积累来决定。

反射
获取class对象方式:

  1. 对象.getClass()
  2. Class.forName(类的全路径)
  3. 类名.class ,包装类.TYPE

c) 通过反射访问属性

  1. 创建相对应的class类
  2. 创建person对象
  3. 获取指定的名称的属性
  4. 通过反射访问该属性时要取消权限查询
  5. 通过set进行赋值
Class<?> class1 = Class.forName("com.oldcran.entity.Student");
Student student = new Student();
Field field = class1.getDeclaredField("age");
// class1.getFields(), class1.getDeclaredFields();
field.setAccessible(true);
field.set(student, 18);

d) 通过反射调用方法

  1. 实例化class对象
  2. 获取person类中名为sayhello的方法
  3. 调用该方法

Class<?> class1 = Class.forName("com.oldcran.entity.Person"); Person person = new Person(); Method sayHello = class1.getMethod("sayHello", String.class) sayHello.invoke(person, "hello, old crab");

利用反射进行构造方法:

  1. 获取class对象
  2. 获取构造器
  3. 创建实例

```Class<?> class1 = Class.forName("com.oldCrab.entity.Student")
Constructor<?> constructor = class1.getConstructor();
Student stu = (Student)constructor.newInstance();

Constructor<?> constructor1 = class1.getConstructor();
Student stu = (Student)constructor1.newInstance("老螃蟹", 18);
```

内省

a) 概念:是java提供的一套API专门用于操作java对象的属性,比反射更加方便

通过Introspector 获取 BeanInfo
beaninfo获取propertyDescriptor
然后再获取getter and setter

b) 修改javabean属性

创建person对象
使用属性描述器获取person类name属性的描述信息
获取name属性相对应的setter方法
然后再调用方法修改值

c) 读取bean属性

Jsp标签访问javabean

a) Jsp:useBean标签

得知道id 实例的引用
Scope 为page request session application

b) Jsp:setPeoperty

c) Jsp:getProperty

beanUtils工具

a) 概念:通过beanUtil范文javaBean的属性

转载于:https://www.cnblogs.com/jwlxtf/p/7918414.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值