首页 > 编程知识 正文

java反射,java反射怎么理解

时间:2023-05-06 09:24:42 阅读:15417 作者:3819

一、反射是什么(反射是框架设计的灵魂)1,JAVA反射机制是在运行状态中

任何一个类都可以知道该类的所有属性和方法;

对于任何对象,都可以调用其方法和属性之一。

这种动态检索的信息以及动态调用对象的方法的功能称为java语言的反射机制。

2,反射提供的功能:

在运行时判断任意对象所属的类在运行时构建任意类的对象是在运行时判断任意类具有的成员变量和方法并在运行时调用任意对象的方法。 要解剖类,必须首先获取该类的字节码文件对象class。 解剖时使用Class类的方法。 因此,首先获取与每个字节码文件对应的Class类型的对象。

3,关于class对象和这个class类

Class对象的来源是将Class文件导入内存并为其创建Class对象

4,class类 :代表一个类,是Java反射机制的起源和入口

它用于获取有关类的各种信息,并提供了获取类信息的方法

Class类从Object类继承

Class类是所有类通用的图形

每个类都有自己的对象,同时每个类也被视为一个对象,有一个通用的图形Class,存储类的结构信息,并通过类的名称、属性、方法、构造方法、父类和接口等适当的方法检索适当的信息

Class类的实例表示正在运行的Java APP应用程序中的类和接口。 也就是说,jvm具有n个或更多实例,每个类都有其Class对象。 (包括基本数据类型)

Class没有构建公共的方法。 加载类后,类对象由Java虚拟机自动生成,并通过调用类加载器的defineClass方法自动生成。 也就是说,我们不需要自己处理创建,JVM已经为我们创建了。

没有公共机制。 方法一共64个太多了。

5,反射的使用场景

Java在编码时知道类和对象的具体信息。 此时,直接操作类和对象就可以了。 如果在编码时不知道类或对象的具体信息,则需要使用反射,例如将类的名称放在XML文件中,将属性和属性值放在XML文件中,在运行时读取XML文件,并动态获取类的信息

在编译时,我们完全不知道该对象或类可能属于哪个类。 程序只根据运行时信息找到该对象和类的真实信息

第二,要通过三种获取反射入口(class对象)的方法操纵反射,必须首先获得反射入口

1,通过Class.forName ((“类名整体”) ) ) )

try{班? perclazz=class.forname (reflect _ fans he.person ); system.out.println(Perclazz; }catch(classnotfoundexceptione ) { e.printStackTrace ); (2、类名. class

Class? perClazz2=Person.class; 3,对象. getClass ()。

人员人员=新人员(; Class? perClazz3=person.getClass (; 三.基于反射入口对象(class )获取类的各种信息,可以在一个类的反射入口class对象中获取类的所有信息

示例1(Perclazz.getmethods ) )是否要获取所有此类公共方法(父类的、实现接口的、自己的) Class? perClazz=null; try { perclazz=class.forname (reflect _ fans he.person ); }catch(classnotfoundexceptione ) { e.printStackTrace ); } method [ ] methods=perclazz.get methods (; //所有方法for (方法方法:方法) system.out.println (方法); (例2 )获取所有结构方法

示例3 :获取父类

例4 )获取当前类(仅限本类)的所有方法和属性。 包括私人生活

重要:可以获取当前类的对象,并通过对象调用类的方法

四.通过反射获取对象的实例,操作对象1,class.newInstance (),用力转动类型,然后可以主要调用方法。

2、操作属性,可以操作类中的公共属性和私有属性

如果属性为private,则通常不允许从外部操作属性值。 在此,可以使用Field类的setAccessible(true )方法临时打开操作权限

调用方法也同样可以调用私有方法。 null是因为此方法没有参数

五.在程序运行过程中动态确定要调用的类和方法

最新2020整理收集的一些高频面试题(都整理成文档),有很多干货,包含mysql,netty,spring,线程,spring cloud、jvm、源码、算法等详细讲解,也有详细的学习规划图,面试题整理等,需要获取这些内容的朋友请加Q君样:11604713672

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。