java - Java 中 'new' 运算符的真正意义是什么?

标签 java

如果“构造函数”在我们创建对象时分配内存并初始化实例变量,那么我们为什么要说 Object o = new Object(); ? 为什么不只是 Object o = Object();

new 运算符实际上做了什么?

最佳答案

构造函数仅初始化预先存在的对象。区分构造函数和方法调用的方法是使用 new 关键字。例如您可以在 Object 类中拥有一个名为 Object 的方法,但这可能不会创建任何内容。当你有子类时,这会更加令人困惑。

class A {
    A() { } // constructor
    static A A() { return new A(); } // method
    static A B() { return new A(); } // method
}

class B extends A {
    B() { }
}

A b = new B(); // creates a B
A a = B.B(); // creates an A

new 关键字的作用是明确何时创建新对象。

顺便说一句,您可以有一个工厂方法,按照您的建议返回一个新对象,但是将其明确化可能会被认为更清楚它实际在做什么。

关于java - Java 中 'new' 运算符的真正意义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41569642/

相关文章:

java - Spring Boot - NoClassDefFoundError : javax/servlet/Filter && Unable to start ServletWebServerApplicationContext when trying to use Netty

java - 如何调试war依赖?

具有过滤条件工作流程的 Java 8 流

java - 如何在 spring boot webflux 上从 mono<user> 获取用户名?

java - 新的 Google Map Api for Java 应用程序,在 JPanel 中添加 map

java - 启动 Sonar 服务 - java.lang.OutOfMemoryError : GC overhead limit exceeded Ubuntu

java - applet 可以与 servlet 实例通信吗

java - 将来自不同数组列表类的数据与不同实例合并

java - 如何构建基于 lambda 的 Fluent 构建器?

java - 有效的 XML 和 DTD 未验证