在方法体内用匿名类,是不是会导致调用一次就产生一个新的匿名类,然后方法区空间不够?

在方法体内用匿名类,是不是会导致调用一次就产生一个新的匿名类,然后方法区空间不够?

最佳答案

试一下就知道了:

  1. 写一段用到了匿名内部类的代码,比如叫 Test 类
  2. 编译
  3. 看编译出来的东西里是不是有叫 Test$1.class 之类的东西

匿名内部类只是匿名,其实还是一个普通的类,编译期就已经存在了,不是在运行期动态生成出来的的
会把永久代/元数据爆掉的是groovy或者其他在运行期大量动态生成class的东西