zoukankan      html  css  js  c++  java
  • java new一个接口到底要做什么

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

    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.classProgram

    1:

    复制代码
     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 }
    复制代码

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

  • 相关阅读:
    类的定义
    面向对象与面向过程介绍
    跨目录导入模块
    正则表达式re模块
    常用工具包(模块)
    生成器generator
    闭包
    命名空间name space
    函数的递归
    POJ1062
  • 原文地址:https://www.cnblogs.com/mrxiaohe/p/5601077.html
Copyright © 2011-2022 走看看