Java中构造函数的返回类型是什么?

末端托马斯:

众所周知,我们不必向Java构造函数添加任何返回类型。

class Sample{
  .....
  Sample(){
    ........
  }
}

在目标C中,如果我们创建构造函数,则它将返回指向其类的指针。我认为这不是强制性的。

AClass *anObject = [[AClass alloc] init];//init is the constructor with return type a pointer to AClass

同样,构造函数是否转换为返回对其自身类的引用的方法?

像这样:

class Sample{
    .....
    Sample Sample(){
      ........

      return this;
    }
}

编译器是否向构造函数添加对同一类的引用的返回类型?构造函数发生了什么?有参考研究吗?

编辑:

实际上,我希望答案是在字节码级别或JVM级别甚至更低的级别。

彼得·劳瑞:

许多人回答了如何用Java定义构造函数。

在JVM级别,静态初始化程序和构造函数是返回void的方法。静态初始化程序是静态方法,但是构造函数使用this并且不需要返回任何东西。这是因为调用方负责创建对象(而不是构造函数)

如果您尝试仅以字节码创建对象而不调用构造函数,则会收到VerifyError。但是,在oracle JVM上,您可以使用Unsafe.allocateInstance()创建对象而无需调用构造函数,

调用<cinit>不带参数的静态初始化程序,并调用构造函数<init>两者都有一个无效的返回类型。

在大多数情况下,这对Java开发人员是隐藏的(除非他们正在生成字节码),但是只有您在堆栈跟踪中看到这些“方法”(尽管您看不到返回类型)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章