gpt4 book ai didi

java - 直接从类调用方法与创建类并调用方法有何不同?

转载 作者:行者123 更新时间:2023-12-01 17:43:37 25 4
gpt4 key购买 nike

它们使用内存的方式是否存在差异?执行此操作时应考虑哪些情况?这是我的意思的一个例子。

// Calling a method directly
if(a) {
new MyClass().method1();
} else if(b) {
new MyClass().method2();
} else if(c) {
new MyClass().method3();
}

反对以下内容

MyClass mc = new MyClass();
if(a) {
mc.method1();
} else if(b) {
mc.method2();
} else if(c) {
mc.method3();
}

最佳答案

有一点细微的差别。

在第一种情况下,实例的作用域为每个条件 block ,并且一旦 block 结束就有资格进行垃圾回收 - 只会执行一个 block 。

在第二种情况下,实例的作用域为外部 block ,并且一旦外部 block 结束就可以进行垃圾回收。

在任何一种情况下,都只会创建该类的一个实例,尽管在第一个示例中考虑到缺乏安全网 else 情况,您最终可能根本不会创建任何实例(感谢@Nexevis) )。

当然,这不包括类的构造函数、初始化 block 或方法实现中可能存在的泄漏或依赖关系——在给定的上下文中这是不可能知道的。

此外,也无法得知外部 block 的作用,例如将该实例返回给调用者等。

关于java - 直接从类调用方法与创建类并调用方法有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58030303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com