zoukankan      html  css  js  c++  java
  • Java中的内部类(回调)

    一、内部类的主要作用如下:

    1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类

    2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据

    3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便。

    二、内部类可分为以下几种:

    • 成员内部类
    • 静态内部类
    • 方法内部类
    • 匿名内部类。

    三、1,定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( );

          2,外部类是不能直接使用内部类的成员和方法滴,可先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法。

          3,可先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法。HelloWorld.this.name

    四、Java回调

    回调用于层间协作,例如作为一个驱动,是一个底层,他在收到一个数据时,除了完成本层的处理工作外,还将进行回调,将这个数据交给上层应用层来做进一步处理,这在分层的数据通信中很普遍。
    其实回调和API非常接近,他们的共性都是跨层调用的函数。但区别是API是低层提供给高层的调用,一般这个函数对高层都是已知的;而回调正好相反,他是高层提供给底层的调用,对于低层他是未知的,必须由高层进行安装,这个安装函数其实就是一个低层提供的API,安装后低层不知道这个回调的名字,但它通过一个函数指针来保存这个回调,在需要调用时,只需引用这个函数指针和相关的参数指针。
    其实:回调就是该函数写在高层,低层通过一个函数指针保存这个函数,在某个事件的触发下,低层通过该函数指针调用高层那个函数。

    关于回调的总结:
    在Java中,通常就是编写另外一个类或类库的人规定一个接口,然后你来实现这个接口,然后把这个接口的一个对象作为参数传给别人的程序,别人的程序必要时就会通过那个接口来调用你编写的函数。

    下面这个程序会很好的表示回调执行的过程:

    public interface CallBack {   
         //执行回调操作的方法   
         void execute();   
     }
     1 public class Tools {   
     2        
     3     /**  
     4      * 测试函数使用时间,通过定义CallBack接口的execute方法  
     5      * @param callBack  
     6 */   
     7     public void testTime(CallBack callBack) {   
     8         long begin = System.currentTimeMillis();//测试起始时间   
     9         callBack.execute();//进行回调操作   
    10         long end = System.currentTimeMillis();//测试结束时间   
    11         System.out.println("[use time]:" + (end - begin));//打印使用时间   
    12     }   
    13        
    14     public static void main(String[] args) {   
    15         Tools tool = new Tools();   
    16         tool.testTime(new CallBack(){   
    17             //定义execute方法   
    18             public void execute(){   
    19                 //这里可以加放一个或多个要测试运行时间的方法   
    20                 TestObject.testMethod();
    21             }   
    22         });   
    23     }   
    24        
    25 }

    匿名内部类最常用的情况就是在回调当中的精彩表现。 回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口.







  • 相关阅读:
    [ jquery 选择器 :hidden ] 此方法选取匹配所有不可见元素,或者type为hidden的元素
    剑指 Offer 03. 数组中重复的数字 哈希
    LeetCode 1736. 替换隐藏数字得到的最晚时间 贪心
    Leetcode 1552. 两球之间的磁力 二分
    Leetcode 88. 合并两个有序数组 双指针
    LeetCode 1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗?
    LeetCode 1743. 相邻元素对还原数组 哈希
    LeetCode 1745. 回文串分割 IV dp
    剑指 Offer 47. 礼物的最大价值 dp
    剑指 Offer 33. 二叉搜索树的后序遍历序列 树的遍历
  • 原文地址:https://www.cnblogs.com/java-xu/p/5416567.html
Copyright © 2011-2022 走看看