Java中构造代码块和成员变量初始化的顺序关系2之 Cannot reference a field before it is defined

public class Test1 {
	{
		a = 1;
		System.out.println(a);  // 错误
	}
	private int a = 2;

	public static void main(String[] args) {
		Test1 test1 = new Test1();
		System.out.println(test1.a);
	}
}

上面的代码会报出一个错误, Cannot reference a field before it is defined


http://stackoverflow.com/questions/14587910/why-can-you-access-static-field-before-it-is-defined-through-a-method-in-java

This is defined in the JLS 8.3.2.3. In particular:

The declaration of a member needs to appear textually before it is used [...] if the usage occurs in a [...] static initializer of C.

When you call cheat() you go around that rule. This is actually the 5th example in the list of the examples of that section.

Note that cheat() will return false in the static initializer block because test has not been initialised yet.


您好!如果在Docker配置Java环境变量时出现"The JAVA_HOME environment variable is not defined correctly"错误提示,这通常意味着您没有在Docker容器正确设置JAVA_HOME变量。要解决此问题,请按照以下步骤进行操作: 1. 确保您的Docker镜像已安装Java。您可以通过运行以下命令来检查: ``` docker exec <container_id> java -version ``` 如果Java已正确安装,则继续下一步;否则,请确保在构建Docker镜像时包含Java的安装步骤。 2. 使用以下命令进入正在运行的Docker容器: ``` docker exec -it <container_id> /bin/bash ``` 这将打开一个新的终端会话,使您能够在容器内进行操作。 3. 执行以下命令来查找Java的安装路径: ``` readlink -f $(which java) ``` 这将输出Java的安装路径。 4. 打开`/etc/profile`文件(或`/etc/environment`),可以使用任何文本编辑器打开。 5. 在文件末尾添加以下行,将Java安装路径替换为实际路径: ``` export JAVA_HOME=/path/to/java export PATH=$PATH:$JAVA_HOME/bin ``` 6. 保存文件并关闭。 7. 退出Docker容器的终端会话: ``` exit ``` 8. 重启Docker容器: ``` docker restart <container_id> ``` 9. 然后再次进入Docker容器: ``` docker exec -it <container_id> /bin/bash ``` 10. 使用以下命令检查JAVA_HOME变量是否已设置正确: ``` echo $JAVA_HOME ``` 如果一切设置正确,您应该能够看到Java的安装路径。请确保您输入的路径是正确的,并重新检查每个步骤是否正确执行。希望能对您有所帮助!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值