java - 为什么加载图片时要使用getResourceAsStream?

标签 java image jar javafx assets

假设我正在创建一个 jar 文件,并且在资源文件夹中有一个图标要包含在该 jar 中。

因此,在我的代码中使用 stage.getIcons().add(icon); 之前,将图标设置为

是否有任何特殊的优点或缺点
Image icon = new Image("Assets/Icon.png");

对比。

Image icon = new Image(getClass().getResourceAsStream("Assets/Icon.png"));

两者似乎都工作得很好,所以我想找出我通常应该倾向于哪个以及为什么。

有一个相关主题 here但它主要将加载样式与 Web 应用程序进行比较。

最佳答案

javafx.scene.Image(String)调用 validateUrl,它对 String 值进行额外处理,包括检查当前 ThreadcontextClassLoader 资源.

使用像 Class#getResourceAsString 这样的东西的优点是你已经为类做出了决定,这会(稍微)更快,但也更不那么模糊,并且可能更容易诊断如果您遇到问题(因为您控制图像本身的源机制)并且不将决策留给您不能立即控制的代码(并且由于 validateUrlprivate静态,无法更改)

关于java - 为什么加载图片时要使用getResourceAsStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29089514/

相关文章:

java - 创建 osgi 实用程序包有多大用处

java - 如何让 Hibernate/Spring/JPA 自动更新新实体的 ID

java - 使用 java - 如何从 jar 中读取代码签名/证书信息

java - 使用我的 JAR 文件导出图像

java - Tomcat 线程转储 - 可能被卡住的线程

java - 如何在 Spring XML 文件中声明 Java 8 方法引用?

android - 将图像共享到其他应用程序

ios - 为什么 Images.xcassets 不接受我的 jpeg?

image - 提供即时调整大小的图像

java - 如何以编程方式搜索 jar 文件中的文本?