为什么需要使用getClassLoader()
对象调用Class
?为什么我不能简单地使用该包中存在的任何类的对象调用getClassLoader()
?例如,为什么我只能使用Classloader
得到哪个(new Test()).getClassLoader()
加载我的课程?
答案 0 :(得分:1)
您需要区分类和对象。
Test t = new Test()
会产生一个物体。如果你想要它的类加载器,你需要访问对象的类,因为类加载器加载类而不是对象。让我们说
ClassLoader cl = t.getClass().getClassLoader();
如果您只想引用加载Test的类加载器,您还可以编写Test.class.getClassLoader()。
答案 1 :(得分:0)
正如BackSlash所写,ClassLoader加载类并在类对象中引用。如果在类的实例中引用它,那么此引用将附加到VM中的everey对象,从而扩大对象的大小。由于对象无论如何都引用了它们的类对象,因此不需要在每个对象中复制类加载器引用。