1. 简介

Java反射机制是后端开发面试中常常会问到的问题。反射机制是程序在运行时能够获取自身的信息。在Java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有信息。
返回目录

问题1:Java反射的作用是什么?

答:反射机制是在运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意对象,都能够调用它的任意一个方法。在Java中,只要给定类的名字,就可以通过反射机制来获得类的所有信息。这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。

问题2:Java反射创建对象效率高还是通过new创建对象的效率高?

答:通过new创建对象的效率比较高。通过反射时,先找查找类资源,使用类加载器创建,过程比较繁琐,所以效率较低。

问题3: 除了使用new创建对象之外,还可以用什么方法创建对象?

答:使用Java反射可以创建对象

问题4:反射的实现方式都有什么?

答:获取Class对象,有4种方法:

  1. Class.forName(“类的路径”);
  2. 类名.class;
  3. 对象名.getClass();
  4. 基本类型的包装类,可以调用包装类的Type属性来获得该包装类的Class对象。

问题5:实现Java反射的类有什么?

答:

  1. Class:表示正在运行的Java应用程序种的类和接口,注意所有获取对象的信息都需要Class类来实现;
  2. Field:提供有关类和接口的属性信息,以及对它的动态访问权限;
  3. Constructor:提供关于类的单个构造方法的信息以及它的访问权限;
  4. Method:提供类或接口中某个方法的信息;

问题6:反射机制的优缺点:

答:
      优点:

  1. 能够运行时动态获取类的实例,提高灵活性;
  2. 与动态编译结合Class.forName(“com.mysql.jdbc.Driver.class”);

缺点:
      使用反射性能较低,需要解析字节码,将内存中的对象进行解析。
针对缺点其解决方案是:通过setAccessible(true)关闭JDK安全检查来提升反射速度;多次创建一个类的实例时,有缓存会快很多;ReflectASM工具类,通过字节码生成的方式加快反射速度。

问题7:Java反射API有几类?

答:反射API用来生成JVM中的类、接口或者对象的信息

  1. Class类:反射核心类,可以获取类的属性,方法等信息。
  2. Field类:java.lang.reflect包中的类,表示类的成员变量,可以用来获取和设置类之中的属性值。
  3. Method类:java.lang.reflect包中的类,表示类的方法,它可以用来获取类中的方法信息或者执行方法。
  4. Constructor类:java.lang.reflect包中的类,表示类的构造方法。

问题8:反射使用步骤(获取Class对象、调用对象方法)有哪些?

答:

  1. 获取想要操作的类的Class对象,他是反射的核心,通过Class对象我们可以任意调用类的方法。
  2. 调用Class类中的方法,既然就是反射的使用阶段。
  3. 使用反射API来操作这些信息。

问题9:Java反射机制的作用是什么?

答:

  1. 在运行时判断任意一个对象所属的类;
  2. 在运行时构造任意一个类的对象;
  3. 在运行时判断任意一个类所具有的成员变量和方法;
  4. 在运行时调用任意一个对象的方法;

问题10:下面的代码哪些地方会产生编译错误?

public class Outer {class Inner {}public static void foo() {new Inner();}public void bar(){new Inner();}public static void main(String[] args) {new Inner();}
}

答:Java中非静态内部类对象的创建要依赖其外部类对象,上面题目中foo和main方法都是静态方法,静态方法中没有this,也就是说没有所谓的外部对象,因此无法创建内部类对象,如果要在静态方法中创建内部类对象,可以这样做:

new Outer().new Inner();

结语:

在Java编程中,用到反射的地方还是很多的,比如Java框架就大量使用反射,还有在加载驱动和读取配置文件时,反射也是必不可少的。

返回目录

面试宝典-Java反射机制相关推荐

  1. 【面试】Java 反射机制(常见面试题)

    文章目录 前言 一.反射是什么? 二.为什么要有反射 三.反射 API 3.1 获取 Class 对象的三种方式 3.2 获取成员变量 3.3 获取构造方法 3.4.获取非构造方法 四.实践 五.常见 ...

  2. 反射 字段_详解面试中常考的 Java 反射机制

    反射(Reflection) 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说"自审",并能直接操作程序的内部属性和方法. 反射是一项高级 ...

  3. Java 反射机制和动态代理是基于什么原理,了解过吗?

    工作多年以及在面试中,我经常能体会到,有些面试者确实是认真努力工作,但坦白说表现出的能力水平却不足以通过面试,通常是两方面原因: 1."知其然不知其所以然". 做了多年技术,开发了 ...

  4. 反射 数据类型_这是一份超全面详细的Java反射机制学习指南

    Java反射说的是在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性.很多千锋的学员在面试中都会被问到Java反射机制这个问题,为了帮助大家更好的掌握这个知识点,千锋武汉Java培训小 ...

  5. java反射机制深入详解_Java反射机制深入详解

    原标题:Java反射机制深入详解 一.概念 反射就是把Java的各种成分映射成相应的Java类. Class类的构造方法是private,由JVM创建. 反射是java语言的一个特性,它允程序在运行时 ...

  6. very very good,Java面试宝典+Java核心知识集

    这几天刚整理出炉的两份最全"Java面试宝典+Java核心知识集"(very very good!!!),因此有了今天咱这篇文章,没错,我又来分享干货了!!! Java面试宝典 说 ...

  7. java 反射机制详解

    火星十一郎 海纳百川, 有容乃大,QQ:791909235,Tel:13137910179 posts - 774, comments - 556, trackbacks - 0, articles ...

  8. 利用java反射机制 读取配置文件 实现动态类载入以及动态类型转换

    作者:54dabang 在spring的学习过程之中,我们能够看出通过配置文件来动态管理bean对象的优点(松耦合 能够让零散部分组成一个总体,而这些总体并不在意之间彼此的细节,从而达到了真正的物理上 ...

  9. Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法...

    Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法 www.MyException.Cn   发布于:2012-09-15 ...

  10. Java反射机制分析指南

    一.JAVA是动态语言吗? 一般而言,说到动态言,都是指在程序运行时允许改变程序结构或者变量类型,从这个观点看,JAVA和C++一样,都不是动态语言. 但JAVA它却有着一个非常突出的动态相关机制:反 ...

最新文章

  1. 01-iOS蓝牙开发简介
  2. 如何安装部署秋色园QBlog站点
  3. “程序”二字的五笔字根
  4. Maven配置nexus
  5. 用最科学的方法展示最形象的图表——前段数据可视化选型实践
  6. php中ini set,php ini_set函数的用法
  7. IOS 学习笔记 2015-04-10 OC-常用常量
  8. 泛型指针,原生指针和智能指针
  9. python如何高效办公_用 Python 高效办公|一次写好100个word通知,还有谁?
  10. [答疑]请问商品领用审批的序列图画的对么
  11. Linux下编写GT911触摸驱动
  12. 飞控C语言开源,几大主流开源飞控平台优劣比较.doc
  13. 软件测试周刊(第82期):其实所有纠结做选择的人心里早就有了答案,咨询只是想得到内心所倾向的选择。
  14. 自动批量多渠道打包(腾讯VasDolly、美团walle),分渠道更新
  15. 教你文件批量重命名技巧,彻底告别手工改名的繁琐
  16. 大数据周会-本周学习内容总结05
  17. 多智能体强化学习基本概念
  18. bzoj2668 [cqoi2012]交换棋子
  19. Rockland 艾美捷丨TrueBlot链霉亲和素磁珠
  20. HCIA——TCP及其三次握手,问题

热门文章

  1. 快速启动无法识别U盘启动盘。bios无法识别U盘启动盘
  2. 28天肝完阿里面试通关宝典,含答案解析
  3. devgis分享 只分享有价值的东西!http://download.csdn.net/user/devgis
  4. AliSQL编译安装
  5. 光纤MPO端面脏了也会造成您所不知道的故障
  6. Smart3D模型合并
  7. Java代码规范之编程规约
  8. 考研高等数学张宇30讲笔记——第四讲 一元函数微分学的概念与计算
  9. java2wsdl_Java2WSDL之java实现
  10. win7万能声卡驱动_IT天空出品的万能驱动 7 发布下载