簡體   English   中英

無法在決賽上公開靜態

[英]Can't public static on a final

我敢肯定有一個超級簡單的解釋,這會讓我感到愚蠢,但我只是想不通。 Pastebin ,第18行:

public static boolean loadTextures() {
    try {
        final Texture STONE = loadPNG("main\\textures\\stone.png"); // This line here I can't do public static final...         
    } catch (IOException e) {
         return false;
    }
    return true;
}

我希望STONE成為public static final ,但是eclipse說只有final是合法的修飾符。 我將如何聲明public static final變量?

您不能在方法內部聲明靜態變量,因為方法僅具有局部變量。

將其移到您的方法之外。

改變這個:

public static boolean loadTextures() {
                try {
                        final Texture STONE = loadPNG("main\\textures\\stone.png"); // This line here I can't do public static 

對此:

public static final Texture STONE = loadPNG("main\\textures\\stone.png");
public static boolean loadTextures() {
                try {

publicstatic是可以應用於數據成員的修飾符。 在您的示例中, STONEloadTextures()方法范圍內的局部變量。

您可以將其定義為public static final數據成員,然后在static塊中進行初始化:

public static final Texture STONE;
static {
    try {
        STONE = loadPNG("main\\textures\\stone.png");
    } catch (IOException e) {
        // some error handling...
    }
 }

可以看出,這里最大的問題是異常處理。 由於當類加載器加載類時會調用此方法,因此沒有真正好的方法在那里處理潛在的異常。

final是局部變量唯一允許的有效修飾符。 您需要將其移到方法之外,並在類級別聲明變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM