我使用此代码来获取资源:
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"));
它工作正常,但这是我的问题:
这是一个合法的解决方法吗?如果没有,我该怎么做?
注意:我为糟糕的标题道歉。
答案 0 :(得分:4)
请改用class literal。我不清楚AudioLoop
在这种情况下是什么,但除非它是您自己图书馆中的一个类,否则可能不您想要的内容。我怀疑你想要的东西:
new Image(display, UserDisplay.class.getResourceAsStream("Image.png"))
如果你做想要获得相对于AudioLoop
类的资源,请使用:
new Image(display, AudioLoop.class.getResourceAsStream("Image.png"))
另请注意,您的方法和变量名称目前不符合Java命名约定,两者通常都是camelCased
。
答案 1 :(得分:1)
使用UserDisplay.class.getResourceAsStream(“Image.png”)。您只是以不同的方式获得对同一个类的引用。
答案 2 :(得分:0)
从类中获取,不要忘记一个类加载器:
new Image(display,
UserDisplay.class.getClassLoader().getResourceAsStream("Image.png"))