我有与 java 编译器相关的问题。
示例代码:
public class TheClass
{
public static void main(String[] args)
{
System.out.println("Hello world!");
}
}
当我编译这个类时,我可以在 JavaClassViewer 中看到,此类包含<init>
调用 java.lang.Object
的方法construcotr,但我没有创建此类的任何实例,也没有调用任何构造函数。
JVM 调用静态方法 main,但它不会创建类的实例。那么,为什么编译器会生成 <init>
方法?如果我创建 TheClass
的对象,我就能理解这一点
最佳答案
JLS requires that a default constructor be generated :
8.8.9. Default Constructor
If a class contains no constructor declarations, then a default constructor is implicitly declared.
另外:
i am not creating any instance of this class
无关紧要。编译器无法知道这一点。
关于java - 为什么 javac 在不创建任何实例的类中创建 <init> 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35691860/