Java:在构造函数上调用方法

标签 java

Java 构造函数不能返回值。为什么我们仍然可以在构造函数上调用实例方法?例如。为什么 new Foo().bar() 是合法的,其中 bar() 是类 Foo 的实例方法?

最佳答案

虽然构造函数不返回值,但表达式 new Foo() 确实求值 为一个表达式——即新创建对象的引用值。

事实上,这就是 Foo var = new Foo() 的工作原理。那里没有什么特别的:您正在声明一个新变量 var,并将其分配给某个表达式的结果。碰巧评估该表达式也会创建一个新对象。

new Foo().bar() 等同于 (new Foo()).bar()。它计算表达式 (new Foo()),该表达式在编译时具有静态类型 Foo,然后对结果值执行操作(调用 code>bar() 方法)。

在这方面,它类似于 (a + b) * c,它计算表达式 ((a + b)),然后对表达式执行操作结果值(乘以 c)。

关于Java:在构造函数上调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32572081/

相关文章:

java - 即使调用者 Activity 被销毁,短时间运行的 Android 后台任务也可以安全地被忽略,对吗?

java - JAXB 类型已定义

java - 如何将字符串数组显示到 JPanel?

java - java.util.Date 的可模拟帮助器类

java - 接口(interface)实现启动不同的异常

java - 运行网络应用程序后如何禁用自动打开内部网络浏览器?

java - 使用适用于 Java 的 MQ 类运行简单 jar 时出错

java - Gson JSON 最大大小

java - 解析内联 XML 架构 (Xerces for Java)

java - 即使 jar 包含在编译中,程序也找不到 RequestEntity 类