繁体   English   中英

Java:始终保证在构造函数之外的成员初始化被调用吗?

[英]Java: Is member initialization outside of constructor always guaranteed to be invoked?

如果我在构造函数之外初始化一个成员变量,该成员何时实际初始化? 是否保证为该类的所有可能的构造函数初始化?

public class MyClass
{
    private String myName = "MyClass";

    public MyClass(int constructor1Arg)
    {}

    public MyClass(int constructor2Arg1, int constructor2Arg2)
    {}
}

是。 所有实例变量初始值设定项都超级构造函数执行执行,但在此类中声明的任何构造函数的主体之前执行。

(正如Jigar Joshi所提到的,这是假设超级构造函数正常执行。)

是的,如果在创建对象时没有异常

根据Java语言规范:

http://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html#jls-12.5

在调用构造函数之前初始化实例变量,除非先前的任何初始化都抛出错误:

(第5步运行构造函数)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM