假设我正在创建一个 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
值进行额外处理,包括检查当前 Thread
的 contextClassLoader
资源.
使用像 Class#getResourceAsString
这样的东西的优点是你已经为类做出了决定,这会(稍微)更快,但也更不那么模糊,并且可能更容易诊断如果您遇到问题(因为您控制图像本身的源机制)并且不将决策留给您不能立即控制的代码(并且由于 validateUrl
是 private静态
,无法更改)
关于java - 为什么加载图片时要使用getResourceAsStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29089514/