小编典典

内部类轻吗?

java

内部类是否比普通类轻巧,或者最终Java像普通类一样编译内部类?

我知道java中的类本身并不是很轻量,并且它们占据了permgen内存的一部分,所以我想知道最好是使用类似闭包的函数作为内部类,还是标准类也可以呢?


阅读 217

收藏
2020-11-16

共1个答案

小编典典

内部类和匿名内部类都可以编译为.class文件。例如:

class Outer {
     class Inner {

     }

     Object function() {
          return new Object() {

          };
     }
}

将生成三个.class文件Outer.classOuter$Inner.classOuter$1.class。它们没有比其他类更“轻巧”,并且(据我所知)从性能角度来看,使用一个类比另一个类没有优势。当然,内部类(尤其是匿名内部类)在常规类很难编写代码的情况下确实有用,但这是一个单独的问题。

2020-11-16