看了普通的内部类和静态内部类的区别,进行了一些探索与发现。
Case1:
public class Test {
public static void main(String[] args) {
int ab[] = new int[3]; int ii = ab.length;
}
static class A{
}
}
Case2:
public class Test {
public static void main(String[] args) {
int ab[] = new int[3]; int ii = ab.length;
}
class A{
}
}
字节码对比(Test$A)
Case1 --> Case2

常量池差异:

对比可以看下Case1比Case2可以看出初步差异,特别是final Test this$0,如果字节码被修改过会造成一些异常,静态内部类则没有这样的final访问限制。看到这里应该也差不了了解如果在字节码级别Test$A.this$0操作不好也会出现问题,对asm方式操作字节码来说这个是不可接触的。
本文通过两个案例对比分析了普通内部类与静态内部类之间的差异,特别关注了它们在字节码层面的不同表现形式及潜在的影响。对于ASM字节码操作而言,这些差异尤为重要。
779

被折叠的 条评论
为什么被折叠?



