繁体   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