Java中的静态初始化器和最终常量

时间:2014-04-21 15:25:38

标签: java static final static-block static-initializer

给出Java中的以下简单代码。

final class Demo
{
    public static final long serialVersionUID=1L;

    static
    {
        System.out.println("Static constructor invoked.");
    }
}

public final class Main
{
    public static void main(String... args)
    {
        System.out.println(Demo.serialVersionUID);
    }
}

在这个最简单的Java代码中,当通过static通过Demo方法初始化类main()时,应该调用Demo.serialVersionUID构造函数,但它< strong>不。

如果这个程序没有修改就运行了,输出只会是1(调用的消息 - 静态构造函数。{/ 1}}块中指定的将不会显示)。


如果我们希望按照static初始化程序中的指定打印消息,那么我们需要修改static类中的声明语句,

Demo

到任何一个,

public static final long serialVersionUID=1L;

删除public static long serialVersionUID=1L; 修饰符或

final

将基元类型public static final Long serialVersionUID=1L; 更改为其对应的包装类型long

那么,为什么它会这样呢?如果没有对程序进行指定的更改,为什么它不会在Long构造函数中显示消息?

0 个答案:

没有答案