Java反射是指在运行状态下,对于任何一个类,都可以知道该类的所有属性和方法;对于任何对象,都可以调用其任何方法和属性;这种动态获取的信息和动态调用对象的功能称为java语言的反射机制。
一、通过Class类的forName静态方法实现反射
我们可以在运行过程中加载一个类来获取这个类的所有信息。通常通过所有类别的名字符串来实现,这种方法通常用于配置文件。
try { Class cls = Class.forName("java.lang.String"); } catch (ClassNotFoundException e) { e.printStackTrace(); }
上述代码中,首先使用Class类的静态方法forName来加载java.lang.String类。这一方法常用于配置文件,使我们在编译过程中不需要知道所有类名。
二、通过对象的getClass方法实现反射
另外一种通过运行对象来获得相应类的反射方法,即通过调用对象来获得Class方法
String str = "Hello World"; Class cls = str.getClass();
在上述代码中,创建了一个字符串对象str,并调用它的getClass()来获取它所属的类别。这种方法的优点是可以在运行时动态获取,而不需要知道对象的具体类型。
三、通过类的class属性实现反射
使用java反射最简单的方法就是使用java反射,可以直接使用class关键词来获得一个类别的Class对象。
Class strCls = String.class; Class intCls = int.class;
通过class关键字直接获得了与string类型和int类型相对应的Class对象。与前两种方法相比,这种直接使用class关键字的方法是最简单、最直接的,但需要在编写代码时就知道具体的类别。