Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 匿名对象的优点是什么?_Java_Anonymous Objects - Fatal编程技术网

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()