Skip to content

java 反射面试题

一、什么是反射?

Java 反射机制是在运行状态中,对于任意一个类,都能知道这个类的所以属性和方法;对于任何一个对象,都能够调用它的任何一个方法和属性;这样动态获取新的以及动态调用对象方法的功能就叫做反射。 简单来说反射就是解剖一个类,然后获取这个类中的属性和方法,前提是要获取这个类的 Class 对象 在 java 中给我们提供了几个这几个类用于描述编译后的各种对象

描述
java.lang.Class描述编译后的 class 文件的对象
java.lang.reflect.Constructor用于描述构造方法
java.lang.reflect.Field描述字段(成员变量)
java.lang.reflect.Method描述成员方法

二、java 反射的作用

需要访问隐藏属性或者调用方法改变程序原来的逻辑,这个在开发中很常见的,由于一些原因,系统并没有开放一些接口出来,这个时候利用反射是一个有效的解决方法 自定义注解,注解就是在运行时利用反射机制来获取的。

三、反射的实现方式

1.通过 new 对象实现反射机制 2.通过路径实现反射机制 3.通过类名实现反射机制

java
public class Get {
	//获取反射机制三种方式
	public static void main(String[] args) throws ClassNotFoundException {
		//方式一(通过建立对象)
		Student stu = new Student();
		Class classobj1 = stu.getClass();
		System.out.println(classobj1.getName());
		
		//方式二(所在通过路径-相对路径)
		Class classobj2 = Class.forName("fanshe.Student");
		System.out.println(classobj2.getName());
		
		//方式三(通过类名)
		Class classobj3 = Student.class;
		System.out.println(classobj3.getName());
	}	
}

四、反射机制的优缺点

优点:

运行期类型的判断,动态类加载,动态代理使用反射。

缺点:

性能是一个问题,反射相当于一系列解释操作,通知 jvm 要做的事情,性能比直接的 java 代码要慢很多。

五、反射的使用场景

1、可以用于改进设计模式 2、反射机制的典型应用--tomcat 服务器(Tomcat 通过预先设置好的 Java 反射处理机制解析字节码文件并创建相应的实例对象。之后调用所需要的方法。) 3、Spring 的 AOP 和 IOC 都是基于反射实现的 4、例如:拦截器,注解、XML 文档、token 登录拦截等等。

最近更新