Java getResourceAsStream静态解决方法。对吗?

问题描述 投票:2回答:3

我正在使用此代码来获取我的资源:

 this.getClass().getResourceAsStream("Image.png");

它可以正常工作,直到必须使用静态方法实现它为止:

 public class UserDisplay {

 public static void PlayerWon(final Display display, String player, final Composite WinCompo){

我无法在静态上下文中使用this关键字,所以我使用了之前初始化的对象:

public class UserDisplay {

 public static void PlayerWon(final Display display, String player, final Composite WinCompo){

    final AudioLoop WinLoop = new AudioLoop("Sound.wav");

    final Image WinBanner = new Image(display, WinLoop.getClass().getResourceAsStream("Image.png"));

效果很好,但这是我的问题:

这是合法的解决方法吗?如果没有,我该怎么办?

注意:我为可怜的标题表示歉意。

java static resources
3个回答
4
投票

改为使用class literal。目前尚不清楚AudioLoop是什么,但是除非它是您自己的库中的类,否则可能就是您想要的[[not。我怀疑您想要类似的东西:

new Image(display, UserDisplay.class.getResourceAsStream("Image.png"))
如果您

do

要获取相对于AudioLoop类的资源,请使用:new Image(display, AudioLoop.class.getResourceAsStream("Image.png"))
还请注意,您的方法和变量名称当前不符合Java命名约定,通常两者都为camelCased

1
投票
使用UserDisplay.class.getResourceAsStream(“ Image.png”)。您正在以不同的方式引用相同的类。

0
投票
从类中获取,别忘了类加载器:

new Image(display, UserDisplay.class.getClassLoader().getResourceAsStream("Image.png"))

© www.soinside.com 2019 - 2024. All rights reserved.