使用匿名内部类型对性能(CPU利用率,编译器性能,内存消耗等)有害,而不是明确地在某处声明它?
我正在使用一个框架,要求使用某些继承的类,在我的情况下,我只需要一次类,并避免使程序流程难以遵循我想使用匿名内部类型。 “object.SetXclass(new ???”将经常调用,无论如何都需要创建从y继承的对象的新实例。
1)显式类声明
class x extends y
{
@Override
public void m() { ... };
}
~~
object.SetXclass(new x());
2)匿名内部类型 - 这对性能有害吗?
object.SetXclass(new y()
{
@Override
public void m() { ... };
});
答案 0 :(得分:3)
java编译器将匿名内部类编译到它们自己的类文件中,然后java运行时环境就像处理任何其他类一样处理类,因此性能不会有任何显着下降。以下是关于内部类文件http://docstore.mik.ua/orelly/java-ent/jnut/ch03_13.htm
的一些参考答案 1 :(得分:1)
匿名类可以节省您为类命名的过程,并将参数传递给构造函数以供以后使用,并且它的工作方式相同。
一般来说,当您进行实际测试并且测量结果表明您遇到问题时,您应该担心性能问题。即使您已经使用数十年的性能调优系统,您也可以猜测可能导致问题的事情,但是当您测量代码时,您会发现某些事情(可能很多事情)更为重要。