为什么我们不能在java中用"this"关键字创建一个对象?

rad*_*zor 6 java oop factory this

我已经看到了通过引用类对象并使用一个create方法来实现对象创建工厂的地方:class.newInstance()它使用反射,与直接调用默认构造函数相比可能效率不高.

如果java支持类似的东西return new this();,我可以在父类中实现它,这将作为工厂方法(如果没有这样的构造函数,将抛出异常class.newInstance()).

为什么不支持这样的东西?

PS:我在stackOverflow中的第一个问题:)

And*_*mas 4

按照设计,this关键字仅在实例上下文中有效。它的类型是它所在的类的类型。

\n\n

来自 Java 语言规范:

\n\n
\n

当用作主表达式时,关键字 this 表示一个值,该值是对调用实例方法的对象 (\xc2\xa715.12) 或正在构造的对象的引用。

\n
\n\n

如果你想使用默认构造函数创建一个新对象,可以直接调用它。

\n\n
 return new MyType();\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果您想创建对象的克隆,您可以使用该Object.clone()方法。

\n