1 / 50
文档名称:

java程序员面试宝典(共3篇).doc

格式:doc   大小:70KB   页数:50页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

java程序员面试宝典(共3篇).doc

上传人:raojun00001 2017/6/16 文件大小:70 KB

下载得到文件列表

java程序员面试宝典(共3篇).doc

相关文档

文档介绍

文档介绍:java 程序员面试宝典(共3篇) 回目录第9章 Java 的反射机制反射机制( Reflection ),是 Java 提供的一项比较高级的功能, 一般的 Java 开发者使用它的时候相对比较少。但是, Java 的反射却是大多数框架的基础,例如, Struts 、 Hibernate 和 Spring 等。反射机制就好像外科医生的解剖工具,突然从外太空来了一个人,如何知道它的具体构造呢?最好的办法就是把它解剖来看一看, 反射机制就是用来解剖 Java 的类、接口、方法、属性等元素的。本章将包含关于 Java 的反射机制的一些常见面试题, 并且分析这些题目和知识点, 帮助读者梳理这些方面的知识。 反射基础反射提供了一种动态的功能,这种动态功能非常的强大。它主要体现在通过反射相关的 API ,就可以知道一个陌生的 Java 类的所有信息,包括属性、方法、构造器等。而且元素完全可以在运行时动态的进行创建或调用,而不必在 JVM 运行时就进行确定。本节将集中讨论有关 Java 反射机制基础的常见面试题。面试题 086 反射的原理是什么严格意义上来讲, Java 并不是动态语言,它并没有 Perl 和 Python 那样灵活多变。但是, Java 的反射机制却让它显得动态起来,这是为什么呢?通过回答本例问题,将了解 Java 反射的原理是什么。【出现频率】★★★★【关键考点】什么是反射机制; 反射机制的作用是什么。【考题分析】一般情况下,如果想生成这个类的对象时,运行这个程序的 JVM 会确认这个类的 Class 对象是否已经加载。如果尚未加载, JVM 文件, 并将其载入, 一旦这个类的 Class 对象被载入内存,它就可以被用来创建这个类的所有对象。另外,对于一个未知类型的引用来说,通常会采用强制类型转换的形式来得到开发者想要的类型引用,如果执行了一个错误的类型转换,就会抛出一个 ClassCastException 异常。在以上两个过程中, Class 类一直都在起作用。因为 Clas s 类实例包含的是一个 Java 类的全部信息,包括类名、方法、属性等。换句话来说, 也就是 Class 对象就是代表一个第9章 Java 的反射机制类的类。 Java 用 Class 类来代表了所有的类, 方便了开发者掌控类信息。通过 Class , 开发者可以得到属性( Field )、方法( Method )、构造器( Constructor ) 、修饰符( Modifier )等信息。在动态的获取这些信息以后,开发者就可以用该 Class 创建实例、调用任何方法、访问任何属性等操作, 这些也是反射的主要用途。反射机制相关的 API 主要集中在 包下面, 开发者也就是利用该包下面的接口和类进行相关的反射开发的。大多数的框架,如 Struts 、 Hibernate 和 Spring ,都会频繁地使用反射 API 来完成它们动态的功能。【答案】反射是为了能够动态地加载一个类, 动态地调用一个方法, 动态地访问一个属性等动态要求而设计的。它的出发点就在于 JVM 会为每个类创建一个 类的实例, 通过该对象可以获取这个类的信息,然后通过使用 包下的 API 以达到各种动态需求。面试题 087Class 类的含义和作用是什么 Class 类在反射机制中起到了非常关键的作用,它是开发者进行反射开发的入口。那应该如何获取一个类的 Class 对象呢?如何让一个类动态的加载到 JVM 中呢?通过回答本例的问题,深入地了解 Class 类的含义和用途。【出现频率】★★★★★【关键考点】 Class 类的含义; 如何获取 Class 对象。【考题分析】在前面内容中, 读者知道了 Class 是用来记录一个类的各种信息的, 它伴随着类的加载而创建。那么, 类会在什么时候被加载到 JVM 中呢?概括来说,一个普通的 Java 类,会在以下几种情况,被加载到 JVM 中。(1) 需要使用该类创建对象。如下代码就会到导致 Studen t 类被加载到 JVM 中: (2 )访问该类的静态成员,示例代码如下: (#url#unt);Sutdent stu = new Student(); //创建学生对象(3) 使用 Class 类的静态 forName() 方法, 动态地加载一个指定类名的类。如果类未找到, 则抛出 ClassNotFoundException 异常,示例代码如下: (&.");// 访问静态的 count 成员变