首页 > 其他 > 详细

匿名类直接new接口

时间:2015-01-26 13:18:59      阅读:269      评论:0      收藏:0      [点我收藏+]

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

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

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

package jimmy;
import contract.ISay;
public class Program {
    public static void main(String[] args) {
        ISay say = new ISay() {          
            public void sayHello() {
                System.out.println("Hello java!");
            }
        };
    }
}

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

还好这只是假象,观察bin目录下的class输出,会发现有一个类似Program

1.classProgram1:

package jimmy;

import contract.ISay;
import java.io.PrintStream;

class Program$1
  implements ISay
{
  public void sayHello()
  {
    System.out.println("Hello java!");
  }
}

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

 

参考:

http://www.cnblogs.com/yjmyzz/p/3448330.html

http://blog.sina.com.cn/s/blog_62ea4cf40100mubj.html

匿名类直接new接口

原文:http://www.cnblogs.com/krytor/p/4249913.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!