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 指向的是函数定义时所在的 ...
随机推荐
- Linux Shell : Test命令参数解析
格式: test conditions test -n string : string 不为空 test -z string : string 为空 test int1 -eq int2 : int ...
- where条件的lambda转化为sql语句
网上找的源码,但是博主说有bug 让自己调试.这个是我经过多次修改后的代码,可以直接用 public static class LambdaToSqlHelper { #region 基础方法 #re ...
- jQuery的dataTables插件实现中文排序
最近在写Java web. 写JSP的时候发现一个很好玩的插件dataTables.分页.过滤.排序等等手到擒来. 哎哎哎,有点点可惜的是排序这个功能不支持中文.于是网上查查找找,现在把方法整理一下, ...
- LD_LIBRARY_PATH vs LIBRARY_PATH
LIBRARY_PATH is used by gcc before compilation to search for directories containing libraries that n ...
- 1.java.io包中定义了多个流类型来实现输入和输出功能,
1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分 类,按功能分为:(C),如果为读取的内容进行处理后再输出,需要使用下列哪种流?(G) A.输入流和输出流 B ...
- linkButton
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...
- NSNumber(把数字存进数组字典等的问题)
官方文档地址https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSNum ...
- ListView控件的Insert、Edit和Delete功能(第二部分)
本系列文章将通过一个简单的实例,结合我自己使用ListView的情况,展示如何用ASP.NET 3.5 ListView控件进行基本的Insert.Edit和Delete操作. 系统要求: Windo ...
- Android OpenGL ES(一)OpenGL ES介绍
在学习Android OpenGL ES开发之前,你必须具备Java 语言开发经验和一些Android开发的基本知识,但并不需要有图形开发的经验,本教程也会涉及到一些基本的线性几何知识,如矢量,矩阵运 ...
- \t 的理解
在同一个缓冲区内横向跳8个空格. 如果在 \t 前面有字符串,则包括 \t之前出现的字符串之内一共是8个空格.