【发布时间】:2016-05-13 15:32:03
【问题描述】:
我一直认为我必须先初始化一个类,然后才能将其称为非静态方法,但是,我遇到了一个解决方案,其中包含这样的方法:
public String someStringMethod(){
return new MyClass().toString();
}
所以我可能是开发新手,但这是一个好习惯吗?与“经典”(见下文)方式相比,这是一种更好的方法调用方式吗?
public String classicStringMethod(){
MyClass cl = new MyClass();
return cl.toString();
}
它们有什么性能差异吗?第一种方式有“特殊名称”吗?
【问题讨论】:
-
他们有什么性能差异吗?第一种方式有“特殊名称”吗? 没有。 它们是等价的。除了保存对局部变量的引用(或不保存)之外,它没有我知道的特殊名称。
-
两种方式都达到了完全相同的结果。这实际上只是风格上的差异。我更喜欢第二种风格。感觉对追我的人或看着它的可怜的人来说更清楚一点,而他们在深夜试图调试时扯下头发。通常,编译器/优化器会将其解析为相同的字节码。
-
谢谢你的回答,现在很清楚了。
-
糟糕,我敢肯定,在上面的评论中看到“fluid”这个词的地方,打“fluent”的意思是混乱。
-
您问题的标题提出的问题与正文略有不同。要回答标题中提出的问题,为什么丢弃对 Java 中有效的新实例的引用?简短的回答是:Garbage Collection。创建一个对象,用它做某事(甚至什么都不做),然后再也不引用它是完全有效的。 VM 会清理它。