Thumbnail: jekyll

Java的反射机制

on under jekyll
1 minute read

含义:

Java的反射是指在运行时获取类的方法、属性、父类、接口等类的内部信息的机制。通过“new”创建一个类的实例时,实际上是由Java虚拟机根据这个类的class对象在运行时构建出来的。反射是通过class对象来获取它的定义信息,从而可以访问到它的属性、方法。知道该类的父类、实现了哪些接口等信息。

Class类说明:

使用javac可以将.java 文件编译为.class文件,在.class文件包含了对类原始定义信息(父类、接口、构造器、属性、方法等)。.class文件在运行时会被ClassLoader加载到Java虚拟机中,当一个.class文件被加载后,虚拟机会为之生成一个Class对象,现在就可以在程序中通过“new”实例化对象了(即在运行时根据相应的Class对象构造出来)。确切来说,这个Class对象实际上是java.lang.Class泛型类的一个实例。例如,Class对象即为一个封装了TestClass类定义信息的Class实例。由于java.lang.Class类没有public的构造方法,所以不能直接实例化这个类。不过可以通过这样三种方式取得其Class对象:

  1. Class<TeseClass> testClass = TestClass.class;
  2. 或者Class<TestClass> testClass = CLass.forName("com.test.TestClass");Class.forName()方法的参数必须是一个类的全路径名,如果import了com.test.TestClass,就可以直接通过“TestClass.class”获取它的CLass对象,而不必写出全路径。
  3. 通过对象本身获取其Class对象
    TestClass testClass = new TestClass();  
    Class<TestClass> tcClass = testClass.getClass();
    
学习笔记, Java, 基础
comments powered by Disqus