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