反射

什么是反射

反射java语言中的一种机制,通过这种机制可以动态的实例化对象、读写属性、调用方法

封装后的类,内部属性一定不能被访问吗?
内部私有化的方法一定不能够被外界调用吗?

获取类对象的方式

一切反射相关的代码都从获得类对象开始

1、通过对应类(java.lang.Class)实例的类(Student.class)实例的个体getClass()方法获取
通用增删改的时候用到

Class clz = stu.getClass();

2、通过Class.forName(“类的全路径”);
JDBC的驱动加载就用到反射技术

Class clz  = Class.forName("com.li.reflect.Student");//2.

3、类实例.class
做通用查询用到

  Class clz  = Student.class;//3
  System.out.println(clz);
  
  Class c  = Student.class;
  Class clz  = Class.forName(c.getCanonicalName());
  System.out.println(clz);

利用反射进行实例化
反射的好处:
能够将未知的类进行实例化
ClassNotFoundException

通过反射的方式调用无参构造器来实例化对象

Object stu = clz.newInstance();//建造实例

通过反射的方式调用带有一个参数的构造器来实例化对象 Class Constructor描述了所以构造器方法

Constructor c = clz.getConstructor(String.class);
Student stu = (Student) c.newInstance("s001");

通过反射的方式调用带有一个参数的构造器来实例化对象

Constructor c = clz.getConstructor(String.class,String.class);
Student stu = (Student) c.newInstance("s001","zs");

通过反射的方式调用私有的构造器来实例化对象 Class
// getConstructor与getDeclaredConstructor
// getConstructor获取到的是public修饰的
// getDeclaredConstructor 获取的所有得构造器

Constructor c = clz.getDeclaredConstructor(Integer.class);
  c.setAccessible(true);//
  Student stu = (Student) c.newInstance(23);

web.xml是如何使用反射的

在这里插入图片描述

动态方法调用

在这里插入图片描述

反射读写属性

在这里插入图片描述

反射能够访问私有化的属性和方法
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值