首先,为澄清起见,我既没有说也没有写上面引用的文字。我永远不会那样说。那只是有关出版物的草率报道。
关于Java
9中的类加载和资源查找,最重要的要了解的是,从根本上讲,它们没有改变。您可以通过调用
Class::forName和类中的各种
getResource*方法,以
Class与以往相同的方式搜索类和资源
ClassLoader,而不管代码是从类路径还是模块路径中加载的。与JDK
1.2中一样,仍然有三个内置的类加载器,它们具有相同的委托关系。因此,许多现成的代码都是开箱即用的。
如JEP 261中所述,存在一些细微差别:内置类加载器的具体类型已更改,并且以前由引导类加载器加载的某些类现在由平台类加载器加载,以提高安全性。因此,假定内置类加载器是的现有代码
URLClassLoader,或由引导类加载器加载类的现有代码,可能需要进行一些小的调整。
最后一个重要的区别是模块中的非类文件资源默认情况下是封装的,因此除非它们的有效包为,否则无法从模块外部找到它们
open。从您自己的模块加载资源,最好使用在资源查找方法
Class或者
Module,它可以找到任何资源的模块中,而不是那些
ClassLoader,只能在找到非类文件的资源
open模块的封装。



