设为首页 加入收藏

TOP

Java反射Reflect的使用详解
2019-09-03 02:46:40 】 浏览:47
Tags:Java 反射 Reflect 使用 详解

一个类通常包含了属性、方法、构造函数等,而Java一般情况下是现有类再有对象,通过对象调用各种属性和方法,而Java反射则是通过已有的对象,反过来得到其所属类的相关信息,调用所属类的相关方法。


我们知道在Java的世界中,万事万物皆对象。其实类本身也是对象,任何一个类都是Class类的实例对象。


如上面定义的SuperHero类,是类也是对象,


对象:SuperHero类是Class类的实例,Class类是SuperHero的类类型,故而为对象;


类:以类的方式创建,SuperHero本身可以调用SuperHero ironMan = new SuperHero ()被实例化,ironMan 就是创建的实体,故而也是类。



Class类很特殊,它表示了某个类的类类型,被不可被继承,每个类的Class对象仅有一个,Class类没有公共构造函数。 相反, Class对象由Java虚拟机自动构建,因为加载了类,并且通过调用类加载器中的defineClass方法,原始Java类型( boolean , byte , char , short , int , long , float和double ),和关键字void也表示为Class对象


运行结果为:


先定义一个类


输出结果:


输出结果:


输出结果:


三种创建方式:


第一种方式对象已经有了,所有的操作直接通过该对象进行即可,


第二种方式需要import将类引入,也不是常用的方式,


第三种仅需传入类的路径,即可得到类的相关信息,是最常用的方式。


输出结果:


这里提前说明一下:Class中两个功能相同的方法,若其中一个带有Declared字样,表示针对类中所有声明的变量、方法、构造函数等,而对应不带Declared字样的方法,则表示仅对公有(public)成员变量、方法起作用,下面不再重复描述,下面仅对带有Declared字样的方法进行讲解。


输出结果为:


输出结果为:


输出结果为:


输出结果为:


输出结果为:


输出结果为:


输出结果为:


下面是对invoke方法的API说明


本文对反射的定义,反射使用过程中重要的、常用的类和方法进行了讲解,包括Class类,Constructor类,Field类,Method类的说明及使用。反射机制允许在运行时判断任意一个对象所属的类、构造任意一个类的对象、判断任意一个类所具有的成员变量和方法、调用任意一个对象的方法。大大提高了系统的灵活性和扩展性,不过凡事都有两面性,反射破坏了Java封装的特性,相对来说不安全,需要根据场景酌情考虑,若有不对之处,请批评指正,望共同进步,谢谢!


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python开发之日志记录模块:loggi.. 下一篇Python开发之序列化与反序列化:p..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目