在Java中,匿名内部类型是否对性能有害?

时间:2014-06-12 14:04:50

标签: java performance

使用匿名内部类型对性能(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() { ... }; 
});

2 个答案:

答案 0 :(得分:3)

java编译器将匿名内部类编译到它们自己的类文件中,然后java运行时环境就像处理任何其他类一样处理类,因此性能不会有任何显着下降。以下是关于内部类文件http://docstore.mik.ua/orelly/java-ent/jnut/ch03_13.htm

的一些参考

答案 1 :(得分:1)

匿名类可以节省您为类命名的过程,并将参数传递给构造函数以供以后使用,并且它的工作方式相同。

一般来说,当您进行实际测试并且测量结果表明您遇到问题时,您应该担心性能问题。即使您已经使用数十年的性能调优系统,您也可以猜测可能导致问题的事情,但是当您测量代码时,您会发现某些事情(可能很多事情)更为重要。