如果可以在构造函数部分编写public void,我找不到信息。有可能吗?
答案 0 :(得分:1)
在字节代码级别,构造函数始终为void,因此指定它是多余的。即构造函数始终被称为<init>V
,即V
是V
== void
的返回类型。类似地,静态初始化程序为<clinit>V
如果在这些方法中使用堆栈跟踪(例如,打印异常),您将看到此符号。
构造函数实际上将对象初始化为参数,因为在调用构造函数之前创建了对象。注意:您可以在不调用Unsafe.allocateInstance(Class)
如果可以在构造函数部分编写public void,我无法找到信息。有可能吗?
无法编写它,因为Java将构造函数与方法区分开来,它必须与类具有相同的名称,并且不能指定返回类型。如果指定了返回类型,则假定它是一种方法。
符号x = new Clazz()
还将返回值的数量限制为1,即对象。没有简单的方法来修改此表示法以返回多个对象。即支持构造函数的返回类型并不容易。
如果你想定义一个返回类型,你很可能会考虑像这样的因子方法。
public static MyInterface createObject() {
return new MyClass();
}
注意返回类型与实际创建的类不同,但仍然只返回一个引用。
答案 1 :(得分:1)
构造函数语法在Java Language Specification中定义。其他任何事情都是不正确的。
答案 2 :(得分:0)
问题尚不清楚。 Peter Lawrey回答了一个解释,这是另一个解释。
您无法在构造函数中声明方法。但是,您可以声明一个类并声明变量。
因为您可以在构造函数中声明一个类,所以可以在类中声明一个方法然后使用该类。如果方法不是静态的,则可以构造类的对象。
答案 3 :(得分:0)
不,Java只允许在类中声明方法,而不是在另一个方法或构造函数中声明。您可以直接执行以下操作:
public A() {
class B {
public void m() {
}
}
}