java 反射机制原理 简述[通俗易懂]

java 反射机制原理 简述[通俗易懂]什么是反射机制?1、在运行状态中,对于任意一个类,都能够知道这个类的属性和方法。2、对于任意一个对象,都能够调用它的任何方法和属性。这种动态获取信息以及动态调用对象的方法的功能称为JAVA的反射。反射的作用1、在运行时判断任意一个对象所属的类;2、在运行时构造任意一个类的对象;3、在运行时判断任意一个类所具有的成员变量和方法;4、在运行时调用任意一个对象的方法;生成动态代理。反射的…

大家好,又见面了,我是你们的朋友全栈君。

什么是反射机制?

1、在运行状态中,对于任意一个类,都能够知道这个类的属性和方法。
2、对于任意一个对象,都能够调用它的任何方法和属性。这种动态获取信息以及动态调用对象的方法的功能称为JAVA的反射。

反射的作用

1、在运行时判断任意一个对象所属的类;
2、在运行时构造任意一个类的对象;
3、在运行时判断任意一个类所具有的成员变量和方法;
4、在运行时调用任意一个对象的方法;生成动态代理。

反射的原理

反射的实现主要借助以下四个类:Class、Constructor、Field、Method ;
1、通过Class类获取类对象的三种方法:
第一种:通过类名获得:Class<?> class = ClassName.class;
第二种:通过类名全路径获得:Class<?> class = Class.forName(“类名全路径”);
第三种:通过实例对象获得:Class<?> class = object.getClass();

2、通过Class类获取实现类实例化:
Object o = (Object) c.newInstance() ; (其中c为Class类的实例化对象)

3、获取类中的构造方法:在这里插入图片描述在这里插入图片描述
4、获取类中的属性:

在这里插入图片描述
在这里插入图片描述

5、获取类中的方法:

在这里插入图片描述
在这里插入图片描述

注:

1、ClassForName 与 ClassLoader 的区别:
1)class.forName()除了将类的.class文件加载到jvm中之外,还会对类进行解释,执行类中的static块,还会执行给静态变量赋值的静态方法;
2)classLoader只干一件事情,就是将.class文件加载到jvm中,不会执行static中的内容,只有在newInstance才会去执行static块。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157024.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • free video java hd_0326 iframe和video experience

    free video java hd_0326 iframe和video experience1form表单标签:五个属性2name、action、method、enctype34提交方式:”method”(默认get提交)”>51.get:6所有表达方式以键值成对的方式key=value传递后台。所有信息都在地址栏全部显示url:72.post不会显示表单数据安全,传递内容大小无限制8————————-…

    2022年7月7日
    39
  • iOS 强大第三方资源库

    iOS 强大第三方资源库Github用法git-recipesGitrecipesinChinese.高质量的Git中文教程.lark怎样在Github上面贡献代码my-git有关git的学习资料gitignore非常赞有用的.gitignore模板集合(忽略上传的文件集合),包含了各种语言.完整App@open-source-ios-apps-iOS开源App集合,分:swift与Objec…

    2022年6月9日
    109
  • java键盘输入语句_java的输入语句小结

    java键盘输入语句_java的输入语句小结1.使用Scanner使用时需要引入包importjava.util.Scanner;首先定义Scanner对象Scannersc=newScanner(System.in);如果要输入整数,则intn=sc.nextInt();String类型的,则Stringtemp=sc.next();比如:importjava.util.Scanner;publicclass…

    2022年7月7日
    29
  • java常见的基本数据类型_Java中个数据类型范围

    java常见的基本数据类型_Java中个数据类型范围作为Java新手,笔者在跟随网络教程学习了标识符之后,开始了基本数据类型的学习。java的基本数据类型一共有八种,数值型(整数类型与浮点数类型),字符型和布尔型。其中,整数类型有byte(1字节),表数范围-128到127 short(2字节)int(4)字节 long(8字节)

    2022年5月3日
    58
  • oracle数据库用户密码过期后怎么修改_oracle数据库密码过期怎么修改

    oracle数据库用户密码过期后怎么修改_oracle数据库密码过期怎么修改问题现象:今天在更改数据库数据的时候,程序报错了,如下:ORA-28001:thepasswordhasexpired问题分析:很显然,报错原因就是:密码已过期!所以现在需要做的事情只有两件:1.修改密码的过期时间2.修改/重置密码这里分析一下为什么要这样做:1.修改密码的过期时间:这是因为OracleDatabase11g版本的Oracle数据库有一项默认配置,就是密码过期时间默认为180天(6个月左右);通过sysdba身份可以登录..

    2022年7月28日
    19
  • BeanUtils.populate方法使用

    BeanUtils.populate方法使用BeanUtils.populate方法使用1.在执行BeanUtils.populate之后,会把map封装成User对象。要注意的是,UserBean类中的字段名必须和html中的name属性值相同,不然在BeanUtils.populate执行之后,User对象的字段中会出现NULL数据Map<String,String[]>map=req.getParameterMap();//创建User对象UserloginUser=newUser

    2022年7月26日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号