反射类加载

java中的反射技术:运行时探究和使用编译时未知的类。

反射的核心原理:JVM在加载一个类的时候,会把该类的信息存放到一个Class对象中,该对象又被称为模板对象,JVM可以通过检索对象得到这个类的所有信息。

JDK提供API,允许程序员获取到类的Class对象,导致程序员也可以检索到这个类的信息, 即使这个类不是程序或程序员所实现的。

获取Class对象又3种方法。

1,通过类型名取Class对象,所有的类型都可以获得Class对象,这种方式没有动态性,以为在编译时已知类型名。

2,通过对象或实例对象获取Class对象(只能是非抽象类和数组类型),抽象类,接口,void,基本数据类型都不可以,以为在编写代码时已得到实例对象,所以也没有动态性。

3,通过类全名的字符串形式获得Class对象(它只接受类和接口),这是唯一的一种动态体现。(注意:必须填写类全名,先完成主动加载,然后返回Class对象)

通过Filed可以探究属性,constructor可以探究到构造,Method可以探究到方法。

探究到Constructor可以产生实例对象,使用newInstance方法可以的到对象。

探究到Method就可以通过invoke方法调用方法。

探究到Filed就可以通过get和set方法对属性赋值和修改。

反射是java中第三种产生对象的方法,产生对象时只能调用公共无参构造。私有属性在反射中操作都是调用它的get,set方法。反射是java的底层实现,它其实是破坏了封装。

时间: 2024-12-19 01:14:42

反射类加载的相关文章

反射 类加载

初学反射,学习内容做了一些笔记,比较杂乱: 1.类是java.lang.Class类的实例对象 2.new 创建对象,是静态加载类,在编译时刻就需要加载可能使用到的类. 3.Class c = user.getClass(); //已知该类的对象,可通过getClass方法获取该类的类类型   Class c = Class.forName("类的全称"); //不仅表示了该类的类类型,还代表了动态加载类,运行时加载类是动态加载   Word w = (Word)c.newInstan

java之反射概述

类加载器和反射  类加载器: 1 类的加载过程: 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载.连接.初始化三步骤来实现对这个类进行初始化. 加载:就是指将class文件读入内存,并为之创建一个Class对象.任何类使用时系统都会建立一个Class对象 连接:验证,是否有正确的内部结构,并和其他类协调一致. 准备,负责为类的静态成员分配内存,并设置默认初始化值 解析,将类的二进制数据中的符号引用替换为直接引用 初始化:开辟栈.堆内存空间,创建对象.默认初始化.显示初始化.构

java高级之反射

--- android培训.java培训.期待与您交流! ---- java高级之反射 一 反射(类的加载概述和加载时机) A:类的加载概述 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. 加载 就是指将class文件读入内存,并为之创建一个Class对象.任何类被使用时系统都会建立一个Class对象. 连接 验证 是否有正确的内部结构,并和其他类协调一致 准备 负责为类的静态成员分配内存,并设置默认初始化值 解析 将类的二进制数据

JavaEE基础(二十七)/反射、JDK新特性

1.反射(类的加载概述和加载时机) A:类的加载概述 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. 加载  就是指将class文件读入内存,并为之创建一个Class对象.任何类被使用时系统都会建立一个Class对象. 连接 验证 是否有正确的内部结构,并和其他类协调一致 准备 负责为类的静态成员分配内存,并设置默认初始化值 解析 将类的二进制数据中的符号引用替换为直接引用 初始化 就是我们以前讲过的初始化步骤 B:加载时机 创建类

Java-reflect(反射)初步理解_1

27.01_反射(类的加载概述和加载时机) A:类的加载概述 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. 加载 就是指将class文件读入内存,并为之创建一个Class对象.任何类被使用时系统都会建立一个Class对象. 连接 验证 是否有正确的内部结构,并和其他类协调一致 准备 负责为类的静态成员分配内存,并设置默认初始化值 解析 将类的二进制数据中的符号引用替换为直接引用 初始化 就是我们以前讲过的初始化步骤 B:加载时机

注解与反射-复习

目录 注解 内置注解 元注解 自定义注解 反射机制 简介 Class类 Java内存 类加载的过程 ClassLoader 反射获取运行时类的结构信息 动态创建对象 通过反射创建对象 (一般情况) 通过"构造器对象"创建对象 (不存在无参构造) 通过反射调用成员: method field 测试: 性能分析 反射获取泛型数据 反射获取注解数据 基于B站秦疆老师的课. 感谢! 注解 @since JDK1.5 不是程序本身, 可以对程序做出解释, 可以被其他程序读取(如 编译器) 内置注

2016/5/3 复习

异常处理   try  cathc  finally        Exception表示检查异常    RuntimeException运行时异常     thow抛出异常   thows声明异常 如果父类声明了异常 子类重写父类声明异常 不能比父类的异常多  也不能大余父类异常的声明 常用类  :  System类  系统类     常用方法: currentTimeMillis()返回以毫秒为单位的时间 exit(int status)  终止当前正在运行的JAVA虚拟机     getP

第二十六天笔记

黑马程序员 <a href="http://www.itheima.com" target="blank">java培训</a> 1.反射(类的加载概述和加载时机) A:类的加载概述    当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化.   1)加载          就是指将class文件读入内存,并为之创建一个Class对象.任何类被使用时系统都     会建立一个Class

JAVAOO 11 12 15 13 章

异常处理 异常(exception) 是程序在执行过程中所产生的问题 异常分类: 1  检查异常 2  运行异常 3  错误 对异常的处理,方法有三种: 1.捕获异常,不让它沿着调用闸继续向下抛出 2.捕获异常 并让它向下抛出 3.不捕获异常 RuntimeException以及子类是运行时异常,其它都是检查异常 try没有异常时不会执行catch() try出现异常之后 其它代码不会执行 跳到对应捕获异常的catch() 语句块执行 运行时异常在运行过程中才抛出 先捕获特殊异常 后捕获一般异常