<init>
例如,可以在 stacktrace 中找到方法。
据我了解,它代表在构造函数中完成的初始化。
如果你尝试执行
Object.class.getDeclaredMethod("<init>");
你会得到java.lang.NoSuchMethodException
.
这是什么方法呢?它什么时候被添加到类中? (在编译-执行方面)它是虚拟的吗?anyhow覆盖它?
看看Java虚拟机规范 http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.9,第 2.9 章。它说在<init>
name:
在 Java 虚拟机级别,用 Java 编程语言 (JLS §8.8) 编写的每个构造函数都显示为具有特殊名称的实例初始化方法<init>
。该名称由编译器提供。由于该名称不是有效的标识符,因此不能直接在用 Java 编程语言编写的程序中使用它。
这就是为什么<init>
可以在堆栈跟踪中找到,但无法通过代码访问。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)