2014-01-29 249 views
2

我使用这个代码让我的资源:Java getResourceAsStream静态解决方法。正确?

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

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

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

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

回答

4

改为使用class literal。目前还不清楚AudioLoop在这种情况下,但除非它是您自己的库中的类,否则可能是而不是您想要的。我怀疑你想要的东西,如:

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

如果想获取资源相对于AudioLoop类,用途:

new Image(display, AudioLoop.class.getResourceAsStream("Image.png")) 

另外请注意,你的方法和变量名不目前符合Java命名约定,两者通常都是camelCased

+0

谢谢你的帮助。是的,AudioLoop是我创建的对象。我将它改为UserDisplay.class。这就是我想要做的,但我不确定如何去做。下一次编码时,我将不考虑Java命名约定。谢谢。 – JavaCodeBuilder

+0

你介意我的帖子投票吗?我是新人,并试图获得声誉。你会建议什么来帮助提高我的声誉? – JavaCodeBuilder

+0

@JayCodeBuilder:你总是可以寻找有用的编辑来发布帖子,但回答问题是获取代表IMO的最佳方式。 –

1

使用UserDisplay.class.getResourceAsStream(“Image.png”)。您只是以不同的方式获得对同一班级的参考。

+0

谢谢,我意识到它会创建对同一个类的引用,这就是为什么我这样编码。我已经改变了你的建议。 – JavaCodeBuilder