Java中的回调函数学习
- 声明回调函数的统一接口interface A,包含方法callback();
- 在调用类caller内将该接口设置为私有成员private A XXX;
- 在caller内提供实现A接口的public方法(将外部该接口的实现类通过形参传入caller的XXX);
- caller的某个方法dosth()中会用到XXX.callback()方法;
- 在caller的实例中,先实现A接口,后调用dosth()方法;
网上流行的例子:
- //回调函数接口及方法
- public interface ICallback {
- public void func();
- }
- //回调函数接口实现类
- public class ClassWithCallbackFunction implements ICallback{
- public ClassWithCallbackFunction() {
- }
- public void func(){
- System.out.println("cccccccccccccccccc");
- }
- }
- public class Caller {
- private ICallback callback; //私有接口成员
- public void setCallback(ICallback callback) {
- this.callback = callback; //接口成员的实现:从外部传入
- }
- public void doCallback() { //回调接口成员的方法
- callback.func();
- }
- }
- }
- public class MainClass {
- public MainClass() {
- }
- public static void main(String[] args) {
- Caller caller = new Caller();
- caller.setCallback(new ClassWithCallbackFunction() {
- public void func() {
- System.out.println("aaaaaaaaaa");
- }
- });
- caller.doCallback(); //实现回调
- }
- }
- //现实中是把doCallback()方法放在setCallback里调用,以上是为了说明回调原理
- public class Caller {
- ICallback callback;
- public void doCallback() {
- callback.func();
- }
- public void setCallback(ICallback callback) {
- this.callback = callback;
- doCallback();
- }
- }
另一个例子是JAVA排序的compare接口
- interface Compare {
- boolean lessThan(Object lhs, Object rhs);
- boolean lessThanOrEqual(Object lhs, Object rhs);
- }
- import java.util.*;
- public class SortVector extends Vector {
- private Compare compare; // 私有接口成员
- public SortVector(Compare comp) {
- compare = comp;
- }
- public void sort() {
- quickSort(0, size() - 1);
- }
- private void quickSort(int left, int right) {
- if(right > left) {
- Object o1 = elementAt(right);
- int i = left - 1;
- int j = right;
- while(true) {
- while(compare.lessThan(
- elementAt(++i), o1))
- ;
- while(j > 0)
- if(compare.lessThanOrEqual(
- elementAt(--j), o1))
- break;
- if(i >= j) break;
- swap(i, j);
- }
- swap(i , right);
- quickSort(left, i-1);
- quickSort(i+1, right);
- }
- }
- private void swap(int loc1, int loc2) {
- Object tmp = elementAt(loc1);
- setElementAt(elementAt(loc2), loc1);
- setElementAt(tmp, loc2);
- }
- }
Java中的回调函数学习的更多相关文章
- Java中的回调函数学习-深入浅出
Java中的回调函数一般来说分为下面几步: 声明回调函数的统一接口interface A.包括方法callback(); 在调用类caller内将该接口设置为私有成员private A XXX; 在c ...
- Java中的回调函数
本例拿apache commons dbutils举例 回调函数: 回调是指在执行时,具体的封装处理工用由第三方的类来实现. 回调一般由两部分组成 1:调用类 - QueryRunner.实例类 2: ...
- java与安卓中的回调callback学习笔记
1.回调的简单设计如下: package com.listercai.top; public class A { private CallBack callBack; private AnotherC ...
- 理解和使用 JavaScript 中的回调函数
理解和使用 JavaScript 中的回调函数 标签: 回调函数指针js 2014-11-25 01:20 11506人阅读 评论(4) 收藏 举报 分类: JavaScript(4) 目录( ...
- Java中的回调
又忙了一周,事情差不多解决了,终于有可以继续写我的博客了(各位看官久等了). 这次我们来谈一谈Java里的一个很有意思的东西--回调. 什么叫回调,一本正经的来讲,在计算机程序设计中,回调函数是指通过 ...
- 【Java入门提高篇】Day4 Java中的回调
又忙了一周,事情差不多解决了,终于有可以继续写我的博客了(各位看官久等了). 这次我们来谈一谈Java里的一个很有意思的东西——回调. 什么叫回调,一本正经的来讲,在计算机程序设计中,回调函数是指通过 ...
- 理解javascript中的回调函数(callback)【转】
在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String.Array.Number.Object类的对象一样用于内置对象的管理.因为function实 ...
- JavaScript 中的回调函数
原文:http://javascriptissexy.com/ 翻译:http://blog.csdn.net/luoweifu/article/details/41466537 [建议阅读原文,以下 ...
- 聊一聊 Vue 中 watch 对象中的回调函数为什么不能是箭头函数?
聊一聊 Vue 中 watch 对象中的回调函数为什么不能是箭头函数 本文重点知识点速览: Vue 中的 watch 对象中的回调函数不能是箭头函数. 箭头函数中的 this 指向的是函数定义时所在的 ...
随机推荐
- C++ primer 练习 12.7
重做上一题,这次使用shared_ptr 而不是内置指针.上一题题目为:(编写函数,返回一个动态分配的int的vector.将此vector传递给另一个函数,这个函数读取标准输入,将读入的值保存在ve ...
- LeetCode OJ 235. Lowest Common Ancestor of a Binary Search Tree
Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BS ...
- jquery datatable 参数api
jQuery 的插件 dataTables 是一个优秀的表格插件,提供了针对表格的排序.浏览器分页.服务器分页.筛选.格式化等功能.dataTables 的网站上也提供了大量的演示和详细的文档进行说明 ...
- mongodb启动
MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可护展的高性能数据存储解决方案.MongoDB是一款分布式文档数据库,支持类似关型数据库的主从结构,文档以二进制J ...
- Python 模块功能paramiko SSH 远程执行及远程下载
模块 paramiko paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现 ...
- C++设计模式-Singleton单例模式
template <typename T> class Singleton { public: template <typename... Args> static T* In ...
- Servlet学习三:不允许直接访问jsp处理方式一过滤器
转自:http://zy19982004.iteye.com/blog/1755189
- [DP]一道理想收入问题【转】
题意:以一元为本金,能获得的最大收入,第i天股票价格为v[i],1<=i<=m 思路: (1)DP思路明显,直接进行动态规划,令f[i]代表第i天所获得的最大收入.那么有公式: f[i] ...
- OpenGL ES着色器语言之语句和结构体(官方文档第六章)内建变量(官方文档第七、八章)
OpenGL ES着色器语言之语句和结构体(官方文档第六章) OpenGL ES着色器语言的程序块基本构成如下: 语句和声明 函数定义 选择(if-else) 迭代(for, while, do-wh ...
- JAVA-基本知识
1.JAVA跨平台 其实就是在每个平台上要安装对应该操作系统的JVM,JVM负责解析执行,即实现了跨平台.JVM是操作系统与java程序之间的桥梁. 2.JRE:java运行环境,包含JVM+核心类库 ...