public class App{ public static void main(String[] args) { } public TestInterface test() { return new TestInterface() { }; } public TestInterface test2() { return new TestInterface() { }; } interface TestInterface { } class InnerClass { public void innerClass() { class I { } I i = new I(); } public void innerClass2() { class I { } I i = new I(); } } static class Test { public TestInterface test() { return new TestInterface() { }; } } }
看下图.
第一个App.class,没啥好解释的
可以发现,如果类有名字,那么就是xxx$xx.class,对于没有名字匿名内部类,用数字代替类名,因为数字在语言规范里是不正确的类名,用户代码里面的类名不可能就是一个数字.
第二个,对于方法体里面内部类,编译后的类名,xxx$xxx$数字+类名.class格式,一定要加数字,因为无法保证在另外一个方法里面不会出现同样的类名.
posted on 2018-08-12 16:16 阅读( ...) 评论( ...)