[英]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 {
public
和static
是可以應用於數據成員的修飾符。 在您的示例中, STONE
是loadTextures()
方法范圍內的局部變量。
您可以將其定義為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.