簡體   English   中英

如何從java中的其他類初始化靜態最終變量

[英]how to initialize static final variable from other class in 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之前發生了其他事情。

將字段設為 final 並不會改變這一事實。


您有兩種靜態初始化選項。 在靜態初始化程序塊中,如您所示,或內嵌:

static final int value = 421

Java 阻止您做您想做的事情是有充分理由的:因為它可能會導致錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM