首先,调用对象的getClass()方法是获得对象当前的类类型,这部分数据存在方法区中,而后在类类型上调用getClassLoader()方法是得到当前类型的类加载器,我们知道在Java中所有的类都是通过加载器加载到虚拟机中的,而且类加载器之间存在父子关系,就是子知道父,父不知道子,这样不同的子加载的类型之间是无法访问的(虽然它们都被放在方法区中),所以在这里通过当前类的加载器来加载资源也就是保证是和类类型同一个加载器加载的。
最后调用了类加载器的getResourceAsStream()方法来加载资源。
Class:getResourceAsStream(String name)
查找具有给定名称的资源。返回: InputStream
ClassLoader:getResourceAsStream(String name)
返回读取指定资源的输入流。返回: InputStream
虽然返回的类型是一样的,但这两个是不同类的对象的方法。你想要搞清楚他们的区别,先要搞懂Class与ClassLoader的作用
getClassLoader()是得到该类的类加载器