java:使用匿名类直接new接口

来源:互联网 发布:h3c路由器绑定mac地址 编辑:程序博客网 时间:2024/04/27 19:05

java:使用匿名类直接new接口

java中的匿名类有一个倍儿神奇的用法,见下面代码示例:

1 package contract;2 3 public interface ISay {4     void sayHello();5 }

上面是一个简单的接口,下面是如何使用:

复制代码
 1 package jimmy; 2 import contract.ISay; 3 public class Program { 4     public static void main(String[] args) { 5         ISay say = new ISay() {           6             public void sayHello() { 7                 System.out.println("Hello java!"); 8             } 9         };10     }11 }
复制代码

初看上去,就好象在“不提供接口实现的情况下,直接new了一个接口实例”,对于C#er来说,有一种尽毁三观的赶脚。

还好这只是假象,观察bin目录下的class输出,会发现有一个类似Program1.classProgram1.class的文件,如果反编译观察一下,发现原来是编译器自动生成一个类Program1:

复制代码
 1 package jimmy; 2  3 import contract.ISay; 4 import java.io.PrintStream; 5  6 class Program$1 7   implements ISay 8 { 9   public void sayHello()10   {11     System.out.println("Hello java!");12   }13 }
复制代码

如果有些场合,只需要临时需要创建一个接口的实现类,上面的"技巧"可以用来简化代码.

 

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孕39加6没反应怎么办 孕33周感冒咳嗽怎么办 孕33周感冒鼻塞怎么办 孕29周感冒了怎么办 孕35周感冒鼻塞怎么办 孕33周感冒头疼怎么办 胆囊炎和胆结石同时得了该怎么办 体检时来例假了怎么办 梦幻西游没蓝了怎么办 u盘文件删除不了怎么办 魔兽争霸3没路了怎么办 独立显卡玩lol卡怎么办 住6楼发生地震怎么办 地震来了住高层怎么办 拆了点剪力墙怎么办 地震后房子塌了怎么办 房子住70年以后怎么办 房子住满70年后怎么办 房子的年限过了怎么办 配重墙已经拆了怎么办 把配重墙拆了怎么办啊 睡在潮湿的环境怎么办 剪力墙开了门洞怎么办 承重墙开了横槽怎么办 剪力墙拆了一点怎么办 买的楼房70年后怎么办 老小区成危房了怎么办 地震来了怎么办教案ppt 地震来了怎么办手抄报 地震来了在家里怎么办 脸上有黑头毛孔又粗怎么办 17岁看起来显老怎么办 所有证件都丢了怎么办 护师成绩没打印怎么办 护士执业证丢了怎么办 护士证过期5年怎么办 护士证过期2年了怎么办 护士证过期3个月怎么办 护士证过期3年怎么办 头小,护士帽大怎么办 方向机间隙大了怎么办