zoukankan      html  css  js  c++  java
  • java接口实例化对象

    1.今天在博客上突然看见一段代码,直接new一个Runnable接口,具体代码如下。

       

    Runnbale  runnable  =  new  Runnable(){
    
          public  void  run(){
                
                  //具体实现
          }
    
    }

    我第一次意识到接口也可以实例化。然后上网搜了一下答案,在此总结一下。

    简单示例:
    
     public interface ISay {
     
        void sayHello();
    
     }
    
    /*****************/
    
     public class Program {
         public static void main(String[] args) {
             ISay say = new ISay() {          
                 public void sayHello() {
                     System.out.println("Hello java!");
                 }
             };
         }
     }
    
    /*****反编译代码********/
    class Program$1
      implements ISay
    {
      public void sayHello()
      {
        System.out.println("Hello java!");
      }
    }

    初看上去,就好象在“不提供接口实现的情况下,直接new了一个接口实例”。

    观察bin目录下的class输出,会发现有一个类似Program。

    class文件,如果反编译观察一下,发现原来是编译器自动生成一个类program。

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

     

      

         

  • 相关阅读:
    Python操作RabbitMQ
    数组的排序算法
    元类
    Python 中的单例模式
    JS的Ajax和同源策略
    Ajax
    Linux目录结构以及文件操作
    Pymysql
    struts2拦截器和过滤器区别
    为Github 托管项目的访问添加SSH keys
  • 原文地址:https://www.cnblogs.com/wangguangjian/p/8762396.html
Copyright © 2011-2022 走看看