简述反射机制

本文介绍了Java反射机制,它是Java的重要特性,允许程序在运行时动态调用对象的方法和访问属性。文中详细讨论了如何获取Class对象、创建实例、访问构造方法、方法和成员变量,并探讨了动态代理和AOP在反射中的应用。通过反射,开发者可以实现更加灵活的代码控制和元编程能力。
摘要由CSDN通过智能技术生成

反射机制

一:反射机制:

反射机制,是java中十分常用的重要特性。

运用反射机制,可以动态的调用某一个对象的特定方法,或读取任意一个JavaBean(公共类)的所有属性,进行赋值删除等操作。

二:反射的应用

反射可以访问 - - 构造方法,方法,成员变量、泛型、注解等结构

1.访问前需要获取Class对象:

获取Class对象的三种方法: 代码
1. 通过Object类的getClass()方法: Student obj = new Student(); Class stu = obj.getClass();
2. 根据Class中的静态方法: Class stu = Class.forName(“Student”);
3. 通过类本身获取: Class stu = Student.class;
4. 使用类的加载器ClassLoader: ClassLoader classloader = 类.class.getClassLoader(); Class clazz= classloader.loadClass(path);

注意:在运行期间,一个类,只有一个Class对象产生,所以在同一个程序中运用上述三个方法获取三个Class对象为同一个。
(补充:第四种方法:
通过类的加载器获取:
ClassLoader classLoader = this.getClass().getClassLoader();
Class clazz = classLoader.loadClass(className);
)

2.创建实例:

  1. 使用Class对象的newInstance()方法来创建Class对象对应类的实例。 Object b = c.newInstance();
  2. 获取Constructor对象后,调用该对象的newInstance方法利用指定参数创建一个该类型的对象。Book c = (Book)constructors.newInstance("字符串", 6);
  3. 1)类中尽量有一个无参构造器
    2)类的构造器的访问权限需要足够
    3)传递对应的参数

3.访问构造方法:

首先通过下列方法之一创建一个Constructor类型的对象或数组

  • getConstructors()//当前运行时类中声明为public的构造器
  • getConstructor(Class<?>…parameterTypes)
  • getDeclaredConstructors()//当前运行时类中声明的所有构造器
  • getDeclaredConstructor(Class<?>…parameterTypes)

根据构造方法的入口参数的类型访问指定的构造方法:

objectClass.getDeclaredConstructor(int.class,String.class);
objectClass.getDeclaredConstructor(new Class[]{
   int.class,String.class});

Constructor类的常用方法

方法名称 说明
isVarArgs() 查看该构造方法是否允许带可变数量的参数,如果允许,返回 true,否则返回false
getParameterTypes() 按照声明顺序以 Class 数组的形式获取该构造方法各个参数的类型
newInstance(Object … initargs) 通过该构造方法利用指定参数创建一个该类型的对象,如果未设置参数则表示采用默认无参的构造方法
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值