接口回调与lambda表达式(接口回调定义)

  本篇文章为你整理了接口回调与lambda表达式(接口回调定义)的详细内容,包含有接口回调例子 接口回调定义 接口的回调作用 如何简单理解接口回调 接口回调与lambda表达式,希望能帮助你了解 接口回调与lambda表达式。

   接口回调

  “接口回调”一词是借用了C语言中指针回调的术语,表示一个变量的地址在某一个时刻存放在一个指针变量中,那么指针变量就可以间接操作该变量中存放的数据。

  和类一样,接口也是Java中的一种重要的数据类型,用接口声明的变量称作接口变量.

  接口属于引用型变量,在接口变量中可以存放实现该接口的类的实例的引用,即存放对象的引用。

  例如,假设Com是一个接口,那么就可以用Com声明一个变量:

  

Com com;

 

  ImpleCom object = new ImpleCom();

  

 

   其内存模型如图6.4所示,称此时的com是一个空接口,因为在com变量中还没有存放实现该接口的类的实例(对象)的引用。
假设ImpleCom类是实现Com接口的类,用ImpleCom创建名字为object的对象,那么object对象不仅可以调用ImpleCom类中原有的方法,而且可以调用ImpleCom类实现的接口方法,如图6.5所示。

  例如,将上述object对象的引用赋值给com接口:

  

com = object;

 

  

 

   那么内存模型如图6.6所示
箭头示意接口com变量可以调用类实现的接口方法**(这一过程被称为接口回调)**。

   接口回调非常类似上转型对象调用子类重写的方法。
 

   注:接口无法调用类中的其他非接口方法。

  实例代码:

  

interface ShowMessage{

 

   void showLable(String s);

   default void outPutStart(){

   System.out.println("****");

  class TV implements ShowMessage{

   public void showLable(String s){

   System.out.println("**tv**");

   System.out.println(s);

   System.out.println("**tv**");

  class PC implements ShowMessage{

   public void showLable(String s){

   System.out.println("**pc**");

   System.out.println(s);

   System.out.println("**pc**");

  public class E{

   public static void main(String[] args) {

   ShowMessage sm;// 1.声明接口变量

   sm=new TV(); //2. 上转型对象

   sm.showLable("电视");//3. 接口回调 调用的是实现接口的类的方法

   sm=new PC();

   sm.showLable("电脑");

   sm.outPutStart();

  
Lambda表达式

  函数接口(单接口)

  一个接口中有且只有一个abstract方法。

  

interface Ex{

 

   public abstract int sum(int a,int b);

  //Ex1 继承 ex接口

  class Ex1 implements Ex{

   public int sum(int a ,int b){

   return a+b;

  public class E {

   public static void main(String[] args) {

   Ex e1 = new Ex1 ();

   Ex e2 =(a,b)- {

   return a+b;

   };//使用lambda 实现sum方法并创建继承Ex接口的子类对象

   System.out.println(e1.sum(1,2));//接口回调

   System.out.println(e2.sum(2, 2));//接口回调

  
Lambda表达式

  由于lambda过于简化,所以必须有特殊的上下文。因此lambda表达式通常用于单接口中。

  

Ex e =(a,b)- {

 

   return a+b

  };//实现sum方法并创建继承Ex接口的子类对象

  e.sum(1,2);//接口回调

  

 

  接口类型的参数

  定义一个方法,方法的类型是接口类型,就可以将任何实现该接口的实例引用作为形参。通过接口回调,实现接口的多态。

  实例:

  

 

 

  interface SpeakHello{

   void speakHello();

  
a.lookHello(new English());

   //第三种回调接口的方法 不用单独新建继承接口的类,使用lambda新建匿名内部类

   a.lookHello(()- {System.out.println("码农的问候");});

  以上就是接口回调与lambda表达式(接口回调定义)的详细内容,想要了解更多 接口回调与lambda表达式的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: