java - 内部类是轻量级的吗?

标签 java closures inner-classes permgen

是内部类比普通类更轻量,还是最终java编译内部类和普通类一样?

我知道 java 中的类本身并不是非常轻量级的,它们会占用部分 permgen 内存,所以我想知道是否最好使用类似闭包的函数作为内部类,或者标准类是否也可以好吗?

最佳答案

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

class Outer {
     class Inner {

     }

     Object function() {
          return new Object() {

          };
     }
}

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

关于java - 内部类是轻量级的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4812464/

相关文章:

java - 最新 JAXB 版本 (Java 7) 中的 XmlID/XmlIDREF 和继承

java - soap 对象应该使用构造函数还是 setter 来创建?

python - 如何枚举python中的嵌套类?

java - 将最终变量传递给匿名类

java - 无法将 Double 数字放入 BigDecimal 变量中

javascript - Javascript 中的闭包(简单)

使用 IntelliJ IDEA 在 Groovy 中调试迭代(闭包)

rust - 如何使用对 FnOnce 闭包的引用?

java - 内部类继承和对封闭类方法/字段的访问

java - em.merge() 没有保存到数据库