使用哪个类加载器?
在上述内容中,问题"What class loader is used?"的出现原因是由于需要确定在Java中使用哪个类加载器来加载类。解决方法是通过实验来验证使用哪个ClassLoader加载类。
根据Java官方文档,Class.forName()方法使用当前的ClassLoader。通过一个小实验可以证明使用new语句实例化的类也使用当前的ClassLoader。在实验中,我们将当前线程的ContextClassLoader设置为自定义的ClassLoader,并实例化一个SomeClass类的对象。在SomeClass类中,我们打印出当前线程的ContextClassLoader和加载该对象类的ClassLoader。结果显示当前ClassLoader是sun.misc.Launcher.AppClassLoader。
此外,文章中还有一些问答部分的内容,询问了一些与ClassLoader相关的概念的含义,如"the current ClassLoader"和"the current class"。这些问题的回答指出,"the current ClassLoader"指的是正在执行方法的类的定义ClassLoader,而"the current class"是指正在执行方法的类,该类由某个ClassLoader加载,并且在加载新类时该ClassLoader处于首位。
通过实验验证了在Java中使用的是当前的ClassLoader来加载类,同时解释了相关概念的含义。