内部类是否比普通类轻巧,或者最终Java像普通类一样编译内部类?
我知道java中的类本身并不是很轻量,并且它们占据了permgen内存的一部分,所以我想知道最好是使用类似闭包的函数作为内部类,还是标准类也可以呢?
内部类和匿名内部类都可以编译为.class文件。例如:
.class
class Outer { class Inner { } Object function() { return new Object() { }; } }
将生成三个.class文件Outer.class,Outer$Inner.class和Outer$1.class。它们没有比其他类更“轻巧”,并且(据我所知)从性能角度来看,使用一个类比另一个类没有优势。当然,内部类(尤其是匿名内部类)在常规类很难编写代码的情况下确实有用,但这是一个单独的问题。
Outer.class
Outer$Inner.class
Outer$1.class