Java中的类路径不仅用于加载.class文件,而且还可以用于加载资源,例如属性文件,图像,图标,缩略图或任何二进制内容。 Java提供了API来将这些资源读取为InputStream或URL。 假设您在项目的config文件夹中有一个属性文件 ,并且想要加载该属性文件,该怎么做? 同样,您的项目的icons目录中有Web应用程序的图标和缩略图,如何加载它们? 答案是通过使用java.lang.Class'getResource()和getResourceAsStream()方法。 这些方法接受资源的路径为String并分别返回URL和InputStream。 您可以通过调用getClass()方法或使用类literal获取类的引用。 如果有一个对象,则可以调用getClass(),因为它是一个非静态方法,另一方面,如果没有任何对象,则可以简单地将.class与任何类的名称一起使用,例如Sample.class将为您提供java.lang.Class的参考。 JDK 1.1提供了这些方法,您甚至可以在有权访问核心Java库的任何地方使用它们。 如果要创建J2ME游戏或应用程序,则可以使用这些方法为游戏加载图标和图块,并为应用程序加载所有其他资源。
在内部,此方法将资源的加载请求委托给其类加载器。 如果对由BootStrap ClassLoader加载的对象调用getResourceAsStream()方法,则它将把它委托给ClassLoader.getSystemResourceAsStream(java.lang.String)方法。 我们将资源的路径传递给此方法,但是用于搜索与给定类关联的资源的规则是由该类的定义类加载器实现的。 由于您可以将绝对路径和相对路径都传递给Class.getResourceAsStream(),但是ClassLoader.getResourceAsStream()采用绝对路径,因此