2014-01-29 250 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