Java 对象构造和封装方法
Java Object Construction and Enclosing Method
我一直在寻找一本书或一些文档来更好地解释这里发生的事情:
System.out.println(">constructor>" + new Object().getClass().getEnclosingConstructor());
输出::>构造函数>null
然而,
System.out.println(">constructor>" + new Object(){/**/}.getClass().getEnclosingConstructor().toString());
输出::>构造函数>packageInformation.ClassConstructor()
我知道这与...可能...与静态初始化序列有关。
我的问题是:它是如何工作的,我在哪里可以阅读更多相关信息?
谢谢。
您可以在 javadoc for Class.getEnclosingConstructor
:
中阅读相关内容
If this Class
object represents a local or anonymous class within a constructor, returns a Constructor
object representing the immediately enclosing constructor of the underlying class. Returns null
otherwise.
由于 Object
不是匿名 class,因此在第一种情况下返回 null
。
new Object(){/**/}
创建一个匿名 class 扩展 Object
的实例,这就是返回非 null
值的原因,如果 new Object(){/**/}.getClass().getEnclosingConstructor()
是放置在构造函数中。
我一直在寻找一本书或一些文档来更好地解释这里发生的事情:
System.out.println(">constructor>" + new Object().getClass().getEnclosingConstructor());
输出::>构造函数>null
然而,
System.out.println(">constructor>" + new Object(){/**/}.getClass().getEnclosingConstructor().toString());
输出::>构造函数>packageInformation.ClassConstructor()
我知道这与...可能...与静态初始化序列有关。
我的问题是:它是如何工作的,我在哪里可以阅读更多相关信息?
谢谢。
您可以在 javadoc for Class.getEnclosingConstructor
:
If this
Class
object represents a local or anonymous class within a constructor, returns aConstructor
object representing the immediately enclosing constructor of the underlying class. Returnsnull
otherwise.
由于 Object
不是匿名 class,因此在第一种情况下返回 null
。
new Object(){/**/}
创建一个匿名 class 扩展 Object
的实例,这就是返回非 null
值的原因,如果 new Object(){/**/}.getClass().getEnclosingConstructor()
是放置在构造函数中。