我确信这是一个非常简单的解释,它会让我感到愚蠢,但我无法理解。 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
变量?
答案 0 :(得分:8)
您不能在方法中声明静态变量,因为方法只有局部变量。
将其移出您的方法。
改变这个:
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 {
答案 1 :(得分:1)
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...
}
}
这里可以看到的最大问题是异常处理。由于这是在类加载器加载类时调用的,因此没有真正的良好方法来处理那里的潜在异常。
答案 2 :(得分:0)
final
是唯一允许局部变量的有效修饰符。您需要将其移出方法并在类级别声明变量。