Java 匿名对象的优点是什么?
我有一个名为Java 匿名对象的优点是什么?,java,anonymous-objects,Java,Anonymous Objects,我有一个名为Sample的类,它在我的代码中使用,如下所示: class Sample{ . . Object someMethod(){ return someObject; } . . } 我称之为: Object ob = new Sample().someMethod(); 我想知道如果我创建任何类(new Sample())的匿名“Object”并调用任何require方法(如果我没有进一步使用该对象)”,是否有任何好处。我假设您询问的是您发布的代码,与以下内容
Sample
的类,它在我的代码中使用,如下所示:
class Sample{
.
.
Object someMethod(){
return someObject;
}
.
.
}
我称之为:
Object ob = new Sample().someMethod();
我想知道如果我创建任何类(new Sample()
)的匿名“Object”并调用任何
require方法(如果我没有进一步使用该对象)”,是否有任何好处。我假设您询问的是您发布的代码,与以下内容对比:
Sample s = new Sample();
s.someMethod();
(其中,您显式地将newsample()
分配给局部变量)
无论以何种方式,性能或内存都没有显著的好处。如果将引用存储在局部变量中,然后调用该方法,我认为存储该引用可能会带来(非常)小的性能损失。然而,我怀疑许多编译器会注意到,一旦调用了方法,变量就死了,并且会优化赋值。JIT编译器可能会完成这项工作。但我们最多只讨论几个cpu周期。我猜这样的对象将立即成为垃圾收集候选对象。我只是看不到一个明确的用例。匿名对象可以用来表示/保存程序中的任何数据,但如果/一旦它没有进一步的用途,垃圾收集器将从内存中清除它。。这将释放分配给它的内存。可读性是一个优势/好处。如果你关心绩效,那么说“绩效”。如果你关心记忆,那就说“记忆”。当评论表明你所说的并不完全清楚时,不要简单地通过详细阐述的方式重复你自己。在这种情况下,可读性几乎是唯一的优势。任何其他差异(在性能、内存使用等方面)都太小而无关紧要。虽然在这种小情况下没有太多优势,但这种语句的另一个潜在好处是在的应用程序中,其中您可能有一个类,该类的方法具有多个参数,每个参数可能具有多个重载变量。使用“匿名”对象的语法的优点是,您没有几行代码来调用几个不同的方法来生成一个对象,您可以在一行上“链接”调用,并使用最后的方法调用“构建”对象(通常是.build()
)