Java之反射

一.引入反射

反射:主要指程序可以访问、检测和修改它自身状态或行为的一种能力。
反射机制:一个非常强大的“动态”相关机制,可以在运行状态,动态获取信息(类的所有属性和方法)以及动态调用对象方法。
使得java可以在运行时加载、探知、使用编译期间完全未知的classes(程序一般是先编译再运行,有些类我们编译过,而有些类我们没进行编译,一般而言未进行编译的类我们无法运行,但我们通过反射机制却可以运行它)。
动态语言:程序在【运行时】,允许改变程序结构或者变量类型的语言,称之为动态语言。例如:Python,Perl等等。
但Java不是动态语言,但是Java提供了一个非常强大的“动态”相关机制--反射。

二.反射的功能

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

三.Java反射

反射把java类的各种成分映射成相应的java类,这些类位于java.lang.reflect包中
class类:代表一个类,称之为类型类
Field类:代表类的成员变量(属性)
Method类:代表类的成员方法
Constructor类:代表类的构造方法
Array类:提供了动态创建数组以及访问数组元素的静态方法

Class类

介绍】:
     Class类是Java反射机制的起源和入口,它是所有类的公共的模板。当一个类被加载以后,java虚拟机就会自动产生一个Class对象。
作用】:
     通过这个Class对象,就能获得加载到虚拟机当中这个Class对象对应的信息:
     例如:类的名字,属性,方法,构造方法,父类和子类
获取Class对象】:
获取Class对象的方法,以下皆以Student类举例:
方法一:
通过Class类的静态方法forName(String 完整类名)来实现
Class c = Class.forName("Student");
方法二:
通过访问类的class属性来获取
Class c = Student.class;//比如通过访问类Student的class属性
方法三:
通过对象的getClass()来获取
Student stu = new Student();
Class c = stu.getClass;
方法四:
对应包装类,可以采用.TYPE来获得
Class c = 包装类.TYPE
包装五:
通过对象的getSuperClass()来获取父类的Class对象
Student stu = new Student();
Class c = stu.getClass();
Class sup = stu.getSuperClass();
Class中常见的方法】:


------------------------------continue-------------------------
全部评论

相关推荐

和蔼:在竞争中脱颖而出,厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了
点赞 评论 收藏
分享
头像
11-09 17:30
门头沟学院 Java
TYUT太摆金星:我也是,好几个华为的社招找我了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务