[英]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.