Java软件开发实战 Java基础与案例开发详解 15-1 反射 共13页.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。 ### Java反射机制详解 #### 15.1 Java反射机制概览 ##### 15.1.1 什么是Java反射? 反射(Reflection)是Java语言的一个核心特性,它允许程序在运行时动态地获取对象类型信息,并且可以利用这些信息进行诸如创建对象、调用方法等操作。这一特性使得Java程序能够具备更高的灵活性和可扩展性。 **反射的主要功能包括但不限于:** - 在运行时判断任意一个对象所属的类。 - 在运行时构造任意一个类的对象。 - 在运行时判断任意一个类所具有的成员变量和方法。 - 在运行时调用任意一个对象的方法。 - 通过反射甚至可以调用到`private`的方法。 - 生成动态代理。 ##### 15.1.2 Java反射API Java反射所需的类主要包括: - `java.lang.Class`: 封装类和接口信息的类。 - `java.lang.reflect.Field`: 封装类的属性信息的类,可以是静态属性或实例属性。 - `java.lang.reflect.Constructor`: 封装类的某个构造方法信息的类。 - `java.lang.reflect.Method`: 封装类或接口上的某个方法的信息的类,可以是静态方法或实例方法。 - `java.lang.reflect.Array`: 封装数组信息的类。 #### 15.2 使用反射获取类信息 ##### 15.2.1 获取Class对象 要使用反射,首先需要获得`Class`对象。有几种常见的方式: 1. **通过对象的`getClass()`方法**: 如果已有该类的一个实例,可以直接调用其`getClass()`方法。 ```java Object obj = new Object(); Class<?> clazz = obj.getClass(); ``` 2. **使用`Class.forName()`方法**: 传入类的全限定名作为字符串参数。 ```java Class<?> clazz = Class.forName("java.lang.String"); ``` 3. **使用类型名`.class`**: 直接使用类名或数组类型的`.class`属性。 ```java Class<?> clazz = Integer.class; Class<?> clazz2 = int[].class; ``` ##### 15.2.2 获取类的详细信息 一旦获得了`Class`对象,就可以通过一系列的方法获取更多关于类的信息,例如: - `getName()`: 获取类的全限定名称。 - `getFields()`: 获取所有public字段。 - `getDeclaredFields()`: 获取所有字段,包括private字段。 - `getMethods()`: 获取所有public方法。 - `getDeclaredMethods()`: 获取所有方法,包括private方法。 - `getMethod(String name, Class<?>... parameterTypes)`: 获取特定名称和参数类型的方法。 - `getConstructors()`: 获取所有public构造方法。 - `getDeclaredConstructors()`: 获取所有构造方法。 #### 15.3 使用反射创建对象 通过`Class`对象,可以使用`newInstance()`方法创建一个新实例: ```java Class<?> clazz = Class.forName("java.lang.String"); Object obj = clazz.newInstance(); ``` 需要注意的是,`newInstance()`方法要求类必须有无参构造函数。如果没有,则需要使用`Constructor`对象来显式调用特定的构造方法: ```java Class<?> clazz = Class.forName("java.lang.String"); Constructor<?> constructor = clazz.getConstructor(String.class); Object obj = constructor.newInstance("Hello"); ``` #### 15.4 使用反射调用方法和操作成员变量 反射不仅可以用于创建对象,还可以用于调用方法和修改成员变量: 1. **调用方法**: - 使用`getMethod`或`getDeclaredMethod`获取方法对象。 - 使用`invoke`方法调用该方法。 ```java Method method = clazz.getMethod("toString", null); Object result = method.invoke(obj, null); ``` 2. **操作成员变量**: - 使用`getField`或`getDeclaredField`获取字段对象。 - 使用`set`或`get`方法读写字段值。 ```java Field field = clazz.getField("length"); field.setAccessible(true); field.set(obj, 10); ``` #### 15.5 代理模式 反射机制还可用于生成动态代理,即在运行时创建一个新的类来代理其他类。这对于实现AOP(面向切面编程)等模式非常有用。在Java中,可以使用`java.lang.reflect.Proxy`类和`InvocationHandler`接口来实现动态代理。 Java反射机制为开发者提供了强大的工具,使得程序能在运行时灵活地操作类和对象。但需要注意的是,反射操作通常会降低程序的性能,并且可能会破坏封装性和安全性,因此应谨慎使用。
剩余12页未读,继续阅读
- 粉丝: 467
- 资源: 7835
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助