解释一下 Class.forName("Test3", true, "".getClass().getClassLoader());
时间: 2023-07-21 19:01:39 浏览: 82
浅谈java中类名.class, class.forName(), getClass()的区别
5星 · 资源好评率100%
`Class.forName("Test3", true, "".getClass().getClassLoader())` 是使用反射中的 `Class.forName()` 方法来获取一个类的 `Class` 对象。这个方法有三个参数:
1. 第一个参数是要获取的类的全限定名(Fully Qualified Name),这里是 "Test3"。
2. 第二个参数是一个布尔值,表示是否执行初始化代码。如果为 `true`,则会执行类的静态初始化代码;如果为 `false`,则不执行。这里使用 `true`。
3. 第三个参数是一个 `ClassLoader` 对象,用于加载类。这里使用 `"".getClass().getClassLoader()` 获取一个空字符串的 `ClassLoader` 对象。
当调用 `Class.forName()` 方法时,它会尝试加载并初始化指定的类,并返回该类的 `Class` 对象。如果找不到指定的类,则会抛出 `ClassNotFoundException` 异常。
需要注意的是,这种方式获取类的 `Class` 对象在Java 9及之后的版本中已经不推荐使用,因为它在模块化环境中可能会引起一些问题。推荐使用 `Class.forName("Test3")` 这种方式来获取类的 `Class` 对象。
阅读全文