什么是Java反射机制?
Java反射说的是在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性。对于任何一个对象,我们都能够对它的方法和属性进行调用。我们把这种动态获取对象信息和调用对象方法的功能称之为反射机制。
1. 反射机制介绍_Class对象获取
(1) 反射机制的常见作用是什么?
1) 动态的加载类、动态的获取类的信息(属性,方法,构造 器) 2) 动态构造对象 3) 动态调用类和对象的任意方法、构造器 4) 动态调用和处理属性 5) 获取泛型信息 6) 处理注解
(2) 获取Class对象的方式有哪些?
1) 通过字节码文件 2) 对象的 getClass()方法 3) Class 类的静态方法 forName(….)反射机制动态操作方法_属性_构造器
(3) 使用反射机制获取类的名称和属性的方法有哪些?
(4) 使用反射机制获取方法及构造方法的方法有哪些?
2. 提高反射效率
(1) 简述如何提高反射的效率?
a) setAccessible 启用和禁用访问安全检查的开关,值为 true 则指示反射的对象在使用时应该取消 Java 语言访 问检查,值为 false 则指示反射的对象不实施 Java 语 言访问检查,并不是为 true 就能访问为 false 就不能访 问 b) 禁止安全检查,可以提高反射的运行速度
(2) 什么是(Reflection)反射?其它语言有这种特点吗?
JavaBean 是 reflection 的实际应用之一,它能让一些工具可视化的操作软件组件。这些工具通过 reflection 动态的载入并取得 Java 组件(类) 的属性。Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。
3. 反射操作泛型
(1) 简述什么是泛型?有哪些作用?
Java 中的泛型仅仅是给编译器 javac 使用的,确保数据的 安全性和免去强制类型转换的麻烦,但是一旦编译完成,所 有与泛型有关的类型全部擦除。 使用泛型直接读取泛型,是读取不到的,因为反射是操作 加载以后的类的。
(2) Java新增的数据类型有哪些?
为了通过反射操作这些类型以迎合实际开发的需要 1) ParameterizedType: 表 示 一 种 参 数 化 的 类 型 ,比 如 Collection,可以获取 String 信息 2) GenericArrayType:泛型数组类型 3) TypeVariable:各种类型变量的公共父接口 4) WildcardType:代表一种通配符类型表达式, 比如? extends Number,? super Integer (Wildcard 是一个单词,就是通配符)
4. 注解
(1) 简述注解的作用?
不是程序本身,可以对程序作出解释。(这一点跟注释没 什么区别) 2) 可以被其他程序(比如:编译器等)读取。(注解信息处理流 程,是注解和注释的重大区别,如果没有注解信息处理流 程,则注解毫无意义)
(2) 常见的内置注解有哪些?
1) @Override :标识方法是重写的方法 2) @Deprecated :标识的方法不建议使用 3) @SuppressWarnings:用来抑制编译时的警告信息 @SuppressWarinings 需要提供参数才能正常使用,这些参数 都是已经定义好的,我们只需要选择就可以了。
5. 自定义注解
(1) 自定义注解的注意事项有哪些?
使 用 @interface 定 义 自 定 义 注 解 时 , 自 动 继 承 了 java.lang.annotation.Annotation 接口 1) @interface 用来声明一个注解 2) 其中的每一个方法实际上是声明了一个配置参数 a) 方法的名称就是参数的名称 b) 返回值类型就是参数类型(返回值类型只能是基本 类型、Class、String、enum) c) 可以通过 default 来声明参数的默认值 d) 如果只有一个成员,一般参数名为 value 注意事项:注解元素必须要有值。我们定义注解元素时,经 常使用空字符串,0 作为默认值。 也经常使用负数(比如-1)表示不存在的含义
(2) 什么叫元注解?
元注解的作用就是负责注解其他注解。在 Java 中定义了 4 个标准的 meta-annotation 类型,它们被用来提供对其它 annotation 类型作说明 这些类型和它们所支持的类在 java.lang.annotation 包中可 以找到 1) @Target 2) @Retention 3) @Documented 4) @Inherited
6. 反射读取注解信息
(1) 简述ORM什么含义?
ORM:对象关系映射 1) 类与表结构对应 2) 属性和字段对应 3) 对象和记录对应 使用注解完成类和表结构的映射关系
(2) 举例说明注解的使用?
将Java中的Student类使用第三方程序通过读取注解生成数 据库中的表1) 编写 Student 类 2) 编写注解 3) 在类中使用注解 4) 通过解析程序将注解读取出来 (通过框架解析) 5) 拼接 SQL 语句,使用 JDBC 到数据库中执行创建表