$1.class($x.class)匿名内部类分析

问题总结

上传class文件只选择了对应的.class文件,没上传$1.class文件,相关功能没生效,之后又重新进行了二次上传,浪费了时间。

问题原因

不理解$1.class这类编译文件的含义

问题分析

$1.class为匿名内部类编译结果,原编译类中存在内部实现方法。内部类可以隐藏一些实现的细节,比如编写事件监听的代码时使用匿名内部类不但方便,而且使代码更容易维护。

匿名内部类是唯一一种没有构造器的类。正因为其没有构造器,所以匿名内部类的使用范围非常有限,大部分匿名内部类用于接口回调。匿名内部类在编译的时候由系统自动起名为 Outter$1.class。一般来说,匿名内部类用于继承其他类或是实现接口,并不需要增加额外的方法,只是对继承方法的实现或是重写。

反思结果

部署将对应的所有相关编译文件进行上传

代码示意


```java
 interface ie{
     public void print();
 }

 class outer{}

 public class test{
     public class inner{}
     public void test(ie e){
         e.print();
     }
     public static void main(String[] args){

         new test().test(new ie(){
             public void print(){
                 System.out.println("匿名类");
             }
         });

     }
 }

编译后产生的class文件包括:

接口:ie.class
外部类:outer.class
内部类:test$inner.class
匿名类:test$1.class
test.class

输出
匿名类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值