在学习完理论的编程知识后,我们就可以做一些面试题来检验所学。虽然说面试前都是比较紧张的,但是事先准备充分总能增加不少信心。反射这个模块在调用未知方法上非常方便,这也是我们频繁使用的原因。考题以基础的反射知识点为主,偶尔还会涉及一些代码示例操作。下面我们就来看看反射的面试题吧。
1.什么是反射?
主要是指程序可以访问、检测和修改它本身状态或行为的一种能力
在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法
Java反射机制主要提供了以下功能:
(1)在运行时判断任意一个对象所属的类。
(2)在运行时构造任意一个类的对象。
(3)在运行时判断任意一个类所具有的成员变量和方法。
(4)在运行时调用任意一个对象的方法。
2.哪里用到反射机制?
JDBC中,利用反射动态加载了数据库驱动程序。
Web服务器中利用反射调用了Sevlet的服务方法。
Eclispe等开发工具利用反射动态刨析对象的类型与结构,动态提示对象的属性和方法。
很多框架都用到反射机制,注入属性,调用方法,如Spring。
3.反射机制的优缺点
优点:可以动态执行,在运行期间根据业务功能动态执行方法、访问属性,最大限度发挥了java的灵活性。
缺点:对性能有影响,这类操作总是慢于直接执行java代码。
4.怎么实现动态代理?
首先必须定义一个接口,还要有一个InvocationHandler(将实现接口的类的对象传递给它)处理类。再有一个工具类Proxy(习惯性将其称为代理类,因为调用他的newInstance()可以产生代理对象,其实他只是一个产生代理对象的工具类)。利用到InvocationHandler,拼接代理类源码,将其编译生成代理类的二进制码,利用加载器加载,并将其实例化产生代理对象,最后返回。
以上就是java反射面试题的一些展示,相信学会反射的小伙伴,上方的题目大部分都是能答出来的。对于自己薄弱的知识点,还需要反复的练习。更多Java学习指路:java教程



