gpt4 book ai didi

java - java中匿名 block 中的静态变量

转载 作者:行者123 更新时间:2023-12-01 21:42:12 25 4
gpt4 key购买 nike

为什么我们不能在java中的匿名 block 中初始化静态变量?例如:为什么这段代码不能编译?

public class A {
{
static int a = 1;
}
}

我得到这个编译错误说

Illegal modifier for the variable a; only final is permitted

为什么只有最终版本?

最佳答案

直接在内, block 是instance initializer block 。您不能在实例初始值设定项 block 中声明静态变量。只需将其从 block 中删除即可:

public class A {
static int a=1;
}

在创建实例时,在任何实例构造函数中的代码之前调用实例初始值设定项 block 。因此,您不能在那里声明成员(静态或其他)是有道理的。它们是代码,就像在构造函数内一样。示例:

import java.util.Random;

public class Example {
private String name;
private int x;
private int y;

{ // This is the
this.x = new Random().nextInt(); // instance
this.y = this.x * 2; // initializer
} // block

public Example() {
this.name = null;
}

public Example(String name) {
this.name = name;
}
}

在上面,无论使用哪个构造函数,首先发生的是实例初始化 block 中的代码,然后是所使用的构造函数中的代码。

还有static初始化 block ,它们在加载类时对静态内容执行相同的操作。它们以关键字 static 开头,更多内容请参见上面的链接。

关于java - java中匿名 block 中的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36331728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com