Java反射高频面试题(附答案)
1、除了使用new创建对象之外,还可以用什么方法创建对象?
使用Java反射可以创建对象!
2、Java反射创建对象效率高还是通过new创建对象的效率高?
通过new创建对象的效率比较高。通过反射时,先找查找类资源,使用类加载器创建,过程比较繁琐,所以效率较低
3、java反射的作用
反射机制是在运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意个对象,都能够调用它的任意一个方法。在java中,只要给定类的名字,就可以通过反射机制来获得类的所有信息。
这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。
4、哪里会用到反射机制?
jdbc就是典型的反射
这就是反射。如hibernate,struts等框架使用反射实现的。
5、反射的实现方式:
第一步:获取Class对象,有4中方法:
1)Class.forName(“类的路径”);
2)类名.class
3)对象名.getClass()
4)基本类型的包装类,可以调用包装类的Type属性来获得该包装类的Class对象
6、实现Java反射的类:
1)Class:表示正在运行的Java应用程序中的类和接口
注意: 所有获取对象的信息都需要Class类来实现。
2)Field:提供有关类和接口的属性信息,以及对它的动态访问权限。
3)Constructor:提供关于类的单个构造方法的信息以及它的访问权限
4)Method:提供类或接口中某个方法的信息
7、反射机制的优缺点:
优点:
1)能够运行时动态获取类的实例,提高灵活性;
2)与动态编译结合
缺点:
1)使用反射性能较低,需要解析字节码,将内存中的对象进行解析。
解决方案:
1.通过setAccessible(true)关闭JDK的安全检查来提升反射速度;
2.多次创建一个类的实例时,有缓存会快很多
3.ReflflectASM工具类,通过字节码生成的方式加快反射速度
4.相对不安全,破坏了封装性(因为通过反射可以获得私有方法和属性)
8、Java 反射 API
反射 API 用来生成 JVM 中的类、接口或则对象的信息。
- Class 类:反射的核心类,可以获取类的属性,方法等信息。
- Field 类:Java.lang.reflec 包中的类,表示类的成员变量,可以用来获取和设置类之中的属性值。
- Method 类: Java.lang.reflec 包中的类,表示类的方法,它可以用来获取类中的方法信息或
者执行方法。 - Constructor 类: Java.lang.reflec 包中的类,表示类的构造方法。
9、反射使用步骤(获取 Class 对象、调用对象方法)
- 获取想要操作的类的 Class 对象,他是反射的核心,通过 Class 对象我们可以任意调用类的方法。
- 调用 Class 类中的方法,既就是反射的使用阶段。
- 使用反射 API 来操作这些信息。
10、获取 Class 对象有几种方法
调用某个对象的 getClass()方法
调用某个类的 class 属性来获取该类对应的 Class 对象
使用 Class 类中的 forName()静态方法(最安全/性能最好)
当我们获得了想要操作的类的 Class 对象后,可以通过 Class 类中的方法获取并查看该类中的方法和属性。
11、利用反射动态创建对象实例
Class 对象的 newInstance()
- 使用 Class 对象的 newInstance()方法来创建该 Class 对象对应类的实例,但是这种方法要求该 Class 对象对应的类有默认的空构造器。
调用 Constructor 对象的 newInstance() - 先使用 Class 对象获取指定的 Constructor 对象,再调用 Constructor 对象的 newInstance()方法来创建 Class 对象对应类的实例,通过这种方法可以选定构造方法创建实例。
欢迎关注微信公众号【慕容千语】
Java反射高频面试题(附答案)相关推荐
- Java计算机考试_2017年Java计算机考试模拟试题附答案
2017年Java计算机考试模拟试题附答案 仁者不忧,知者不惑,勇者不惧.三人行,必有我师焉;择其善者而从之,其不善者而改之.以下是小编为大家搜索整理的2017年Java计算机考试模拟试题附答案,希望 ...
- 列举Java高并发面试题附答案解析
Java高并发面试题是程序员面试过程中的必修课,只有熟练掌握这些技术要点,在我们的学习中才会脱颖而出,在这里,达内石家庄Java培训老师作深入解答. Java并发面试题附答案 1. 什么是原子操作在J ...
- java高并发面试题目_列举Java高并发面试题附答案解析
Java高并发面试题是程序员面试过程中的必修课,只有熟练掌握这些技术要点,在我们的学习中才会脱颖而出,在这里,达内石家庄Java培训老师作深入解答. Java并发面试题附答案 1. 什么是原子操作?在 ...
- JAVA大厂高频面试题及答案
Spring概述(10) 什么是spring? Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题.它是一个分层的 ...
- java初级程序员考试真题_一份Java基础知识笔试题附答案
如果运行JavaDemo,什么样的信息会打印出来? 1/** 2如果运行JavaDemo,什么样的信息会打印出来? 3*/ 4public class Demo { 5 public static ...
- leetcode java 大厂基础面试题附答案(二)
目录 1. GC root 有哪些?(华为) 2. 传统 I/O 跟 NIO 的区别?(华为) 3. KAFKA 是什么?主要应用场景有哪些?(腾讯) 4. MYSQL 索引分类?(腾讯) 5. 了解 ...
- leetcode java 大厂基础面试题附答案(四)
目录 1. 说一下泛型原理,并举例说明.(京东) 2. 讲下 Kafka.RabbitMQ.RocketMQ 之间的区别是什么?(京东) 3. 介绍下 MySQL 聚簇索引与非聚簇索引的区别(Inno ...
- JAVA 面试题附答案
2019独角兽企业重金招聘Python工程师标准>>> JAVA 面试题附答案 声明,本人能力有限,只是列出来参考,不对之处欢迎指正. 一.JAVA基础 JAVA中的几种基本类型,各 ...
- 2019最新整理JAVA面试题附答案
2019最新整理JAVA面试题附答案 包含的模块: 本文分为十九个模块,分别是:Java 基础.容器.多线程.反射.对象拷贝.Java Web .异常.网络.设计模式.Spring/Spring MV ...
最新文章
- Git各指令的本质,真是通俗易懂啊
- java cxf 搭soa,WebService CXF入门问题 SOA 骑着上帝去环游 - 贪吃蛇学院-专业IT技术平台...
- android与html注册登录,Android登录注册源码
- 利用一根同轴电缆互连主机构成以太网,则主机间的通信方式为( )
- 微信小程序 map 点击图标回到自己的位置(不使用controls控件)
- 源码里没有configure_深入源码理解.NET Core中Startup的注册及运行
- jquery查找父窗体id_Vue父组件获取子组件中的变量
- JVM 问题排查常用命令
- NFS双机热备探究实验
- 美国纽约法院定于明年3月对BitMEX前高管进行审判
- ARP协议以及攻击欺骗和防御
- Codeforces Round #323 (Div. 2): C. GCD Table(思维题)
- php sspi应用,SPI串行通信模块应用(一)
- mui真机调试时无法查找到手机
- (论文加代码)基于deap数据集的脑电情绪识别(二分类改为八分类)
- 芝麻信用获世界级安全认证
- HDFS中NameNode和Secondary NameNode
- 【面试必过系列,15个经典面试问题及回答思路
- 小米迎来NLP首席科学家王斌:中科院研究员,雷军崔宝秋亲学弟
- Shortcuts快速入门
热门文章
- gtav登录请确认不是机器人_请冷静:R星更新网站图片并不是在暗示GTA6
- 基于Dragonbaord 410c的家庭智能环保卫士——(1)预研
- 【office 2019】不能显示公式解决办法
- Kylin ext3/4 xfs手动扩容根分区
- 无线充电线圈的集中类型
- 用vb.net 导出word
- 暴力破解移动硬盘密码
- 英文单词排序(PTA)
- 【速览】2021年中国风电轴承行业发展现状分析:大功率风电轴承研发进程加快[图]
- JeecgBoot 2.1 Online表单版本发布,基于SpringBoot+AntDesign的快速开发平台