反射(Java面试题)

1、什么是反射?

(1)在运行时,对于任何一个类,都能够知道这个类的属性和方法
(2)在运行时,对于任何一个对象,都能调用这个对象的属性和方法
(3)这种动态获取信息和动态调用对象方法的功能叫做Java反射机制

2、反射的作用是什么?

(1)在运行时,判断任意一个对象所属的类
(2)在运行时,构造任意一个类的对象
(3)在运行时,判断任意一个类的属性和方法
(4)在运行时,调用任意一个对象的属性和方法

3、反射的应用场景

(1)JDBC加载驱动ClassForName
(2)JDK动态代理中利用反射机制生成代理类

4、反射常用方法有哪些?

//通过反射创建test对象
Object test = Class.forName(Test.class.getName()).newInstance();
//获取服务方法:sayHello
Method method = test.getClass().getMethod(“sayHello”, String.class);
//反射调用方法
method.invoke(test, “world”);

5、反射机制的优缺点?

优点:可以动态执行,最大限度的发挥了Java的灵活性
缺点:执行比普通的Java代码要慢

6、.class和.getClass()和Class.forName()的区别?

.class通过类名获取Class对象
.getClass()通过实例获取Class对象
Class.forName()通过类全限定名获取Class对象

7、Class对象和实例对象的区别?

Class对象:每个类编译后都会生成一个Class对象
实例对象:通过Class对象进行实例化之后就是实例对象
所有的类都是在对其第一次使用时,动态加载到JVM中的(懒加载)

8、什么是序列化和反序列化?什么时候使用?

序列化:把对象转化成二进制编码的过程,
(1)被序列化的对象需要实现序列化接口,
(2)为了保持序列化过程的稳定,在类中添加序列化版本号,
(3)声明为 static 和 transient 的成员变量,不能被序列化。static 成员变量是描述类级别的属性,transient 表示临时数据
(4)某个类可以被序列化,则其子类也可以被序列化
(5)反序列化读取序列化对象的顺序要保持一致
反序列化:把二进制编码转化成对象的过程
当Java对象需要在网络上传输或者持久化存储到文件中时,就需要对 Java 对象进行序列化处理。

发布了52 篇原创文章 · 获赞 2 · 访问量 1856

猜你喜欢

转载自blog.csdn.net/qq_42972645/article/details/105657939
今日推荐