java - 如何在java中从其他类初始化静态最终变量
问题描述
我想在 Main 方法中初始化 Final.value。 是否可以在其他类中初始化静态最终常量而不是在其减速类中?
public class Main {
public static void main(String[] args) {
//I want to initialize Final.value in Main method.
}
}
class Final {
//here is the static final variable which can be assigned vai a static block
//but how do I initialize it in the main method if I don't use the static block?
static final int value;
}
解决方案
你不能。您的看法可能是这main
发生在其他所有事情之前,因此在那里初始化事物是安全的,但这是不正确的。
考虑以下代码。
class Scratch
{
static
{
System.out.println(Foo.i);
}
public static void main(String[] args)
{
Foo.i = 100;
}
}
class Foo
{
static int i;
}
它不打印 100。它打印 0 因为之前发生了其他事情main
。
使该领域成为最终并不会改变这一事实。
您有两个静态初始化选项。在静态初始化程序块中,就像您展示的那样,或者内联:
static final int value = 421
Java 阻止您做您想做的事情是有充分理由的:因为它可能会导致错误。
推荐阅读
- php - woocommerece myaccount 中的 mpdf
- cuda - Cuda 安装:我需要 Power9 的东西吗?
- c# - 在 c# winform 中为 app.exe 加载符号
- swift - 在 Swift 中使用默认参数获取对实例变量的引用
- excel - 如何让excel根据条件在一组值之间进行选择
- revit-api - 如何使用 C# 在 revit 中获取计划元素数据
- java - 即使该位置有图像,也找不到文件异常
- xml - SED 多行搜索和替换错误
- github-api - Github API : Github App 在创建问题时应该获得什么权限
- r - 如何生成 2 个具有不同均值的不相关随机正态变量(使用 R)