Java getResourceAsStream静态变通方法。正确?

时间:2014-01-29 17:20:37

标签: java static resources

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

 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"));

它工作正常,但这是我的问题:

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

注意:我为糟糕的标题道歉。

3 个答案:

答案 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"))