如何使用示例从Java中的类路径加载资源

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()采用绝对路径,因此

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java ,动态类是指在程序运行时动态地类,而不是在编译时。这种方式可以使程序更灵活,可以根据不同的需求不同的类。 Java 的枚举(Enum)也可以通过动态类的方式来实现。枚举是一种特殊的类,可以包含常量、方法和字段。在 Java ,枚举常量是在编译时确定的,但是可以通过动态类来动态地枚举类。 下面是一个动态枚举的示例代码: ```java import java.lang.reflect.Method; import java.net.URL; import java.net.URLClassLoader; public class DynamicEnumLoader { public static void main(String[] args) throws Exception { // 枚举类的路径 URL url = new URL("file:/path/to/enum/classes"); // 创建类器 URLClassLoader classLoader = new URLClassLoader(new URL[]{url}); // 枚举类 Class<?> enumClass = classLoader.loadClass("com.example.MyEnum"); // 获取枚举常量 Object[] enumConstants = enumClass.getEnumConstants(); // 调用枚举方法 Method method = enumClass.getMethod("getValue"); for (Object obj : enumConstants) { String value = (String) method.invoke(obj); System.out.println(value); } } } ``` 在上面的示例,我们创建了一个 URLClassLoader 对象,将枚举类的路径传入其。然后使用该类了 MyEnum 枚举类。最后,通过反射的方式调用了 getValue 方法,获取枚举常量的值。 需要注意的是,动态的枚举类必须要和程序的类在同一个类,否则会出现 ClassCastException 异常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值