- 浏览: 180019 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (186)
- Ant (11)
- Axis2 (15)
- Car (9)
- Eclipse (1)
- Java (19)
- Java-EM (4)
- Javascript (11)
- Jsp (1)
- Hibernate (9)
- Mysql (1)
- Ms-Dos (5)
- Music (0)
- Oracle (3)
- Postgresql (0)
- Photoshop (1)
- Spring (17)
- Struts (8)
- Selenium (5)
- Ubuntu (13)
- News (17)
- Others (7)
- SSH (11)
- 算法 (5)
- FreeMarker (4)
- Tomcat (2)
- Linux (5)
最新评论
//定义一个接口
interface Incrementable{
void increment();
}
//一个简单的接口实现类
class Callee1 implements Incrementable{
private int i = 0;
public void increment(){
i++;
System.out.println (i);
}
}
class MyIncrement{
void increment(){
System.out.println ("other operator");
}
static void f(MyIncrement mi)
{
mi.increment();
}
}
//Callee2 想改变 MyIncrement中 increment()方法的行为。
// 主要是因为Callee2有一个完全不同的incr ()方法
// 要解决的问题是在调用increment 方法的时候 改而调用 incr方法
//父类有一个increment 不能因为字类的用途而覆盖这个方法
//所以字类重新写了一个 incr 方法。
class Callee2 extends MyIncrement{
private int i = 0;
//一个用来替代incrment方法的行为的方法。
private void incr(){
i++;
System.out.println (i);
}
//内部类实现Incrementable接口
private class Closure implements Incrementable {
public void increment(){
incr();
}
}
//获得一个回调的引用
Incrementable getCallBackReference(){
return new Closure();
}
}
class Caller{
private Incrementable callbackReferences;
//它只需要一个接口。
Caller (Incrementable chb){
callbackReferences = chb;
}
void go(){
callbackReferences.increment();
}
}
class Callbacks{
public static void main(String[] args){
Callee1 c1 = new Callee1();
Callee2 c2 = new Callee2();
MyIncrement.f(c2);
Caller caller1 = new Caller(c1);
//客户端完全不知道 caller2 中的incrment方法的实现。
//事实上Callee2完全改变了incrment方法的行为(调用了另一个方法)
Caller caller2 = new Caller(c2.getCallBackReference());
caller1.go();
caller1.go();
caller2.go();
caller2.go();
}
}
//回调的价值在于它的灵活性--在运行时决定调用哪个方法。
interface Incrementable{
void increment();
}
//一个简单的接口实现类
class Callee1 implements Incrementable{
private int i = 0;
public void increment(){
i++;
System.out.println (i);
}
}
class MyIncrement{
void increment(){
System.out.println ("other operator");
}
static void f(MyIncrement mi)
{
mi.increment();
}
}
//Callee2 想改变 MyIncrement中 increment()方法的行为。
// 主要是因为Callee2有一个完全不同的incr ()方法
// 要解决的问题是在调用increment 方法的时候 改而调用 incr方法
//父类有一个increment 不能因为字类的用途而覆盖这个方法
//所以字类重新写了一个 incr 方法。
class Callee2 extends MyIncrement{
private int i = 0;
//一个用来替代incrment方法的行为的方法。
private void incr(){
i++;
System.out.println (i);
}
//内部类实现Incrementable接口
private class Closure implements Incrementable {
public void increment(){
incr();
}
}
//获得一个回调的引用
Incrementable getCallBackReference(){
return new Closure();
}
}
class Caller{
private Incrementable callbackReferences;
//它只需要一个接口。
Caller (Incrementable chb){
callbackReferences = chb;
}
void go(){
callbackReferences.increment();
}
}
class Callbacks{
public static void main(String[] args){
Callee1 c1 = new Callee1();
Callee2 c2 = new Callee2();
MyIncrement.f(c2);
Caller caller1 = new Caller(c1);
//客户端完全不知道 caller2 中的incrment方法的实现。
//事实上Callee2完全改变了incrment方法的行为(调用了另一个方法)
Caller caller2 = new Caller(c2.getCallBackReference());
caller1.go();
caller1.go();
caller2.go();
caller2.go();
}
}
//回调的价值在于它的灵活性--在运行时决定调用哪个方法。
发表评论
-
JAVA中建立多线程的典型例子
2008-10-24 21:23 749JAVA中建立多线程,无非两种方式,一是继承自thread类 ... -
解决 Java 程序的乱码问题
2008-10-28 19:19 672早上来上班,同事问在本机好好的 Java 程序,放到服务器上运 ... -
编写对GC友好,又不泄漏的代码
2008-10-31 14:07 668编写对GC友好,又不泄 ... -
java实现给图片添加水印和文字
2008-10-31 18:49 782import java.io.*; import com.su ... -
当我调用 ProductService继承BaseService的方法时,提示我BaseDao属性null
2008-10-31 18:59 911转自:http://hi.baidu.com/annleecn ... -
Java实现分类文件拷贝1
2008-10-31 19:12 961在Java中对文件进行分类 如果你是个Java程序员,也许你 ... -
Java实现分类文件拷贝2
2008-10-31 19:13 693对于对老文件的修改,我 ... -
Java实现分类文件拷贝3
2008-10-31 19:14 699java.io.BufferedWriter; import ... -
Java实现分类文件拷贝4
2008-10-31 19:15 679tputStream fos=new FileOutputSt ... -
j2ee清除缓存的三句话
2008-10-31 19:19 514在ajax中经常会遇到一个问题,就是有重复请求的时候,ajax ... -
java实现快速排序算法
2008-10-31 19:23 653void paixu(int a[],int low,int ... -
java的窗口关闭问题
2008-10-31 19:24 968java的窗口关闭可以实现windowLinstener接口来 ... -
关于 DAO 接口设计的思考
2008-11-07 11:03 673需求: 现在要设计 3 个 DAO 分对 Wind, Hors ... -
如何比较两个有可能为null的实例
2008-11-09 16:37 816如何比较两个有可能为null的实例 以前在写程序 ... -
Java 理论与实践: 嗨,我的线程到哪里去了?
2008-11-21 21:11 684Java 理论与实践: 嗨,我的 ... -
详细解析Java中抽象类和接口的区别
2008-11-26 20:39 680详细解析Java中抽象类 ... -
Java获取系统所有进程(转)
2009-02-06 12:36 927代码比较简单,就不那么讲究了。一个 main 写了吧。 im ... -
MD5加密 Java代码
2008-12-15 19:29 806因为代码太长,无法贴上来,所以传到了网盘上,可以下载 点击下 ...
相关推荐
在Java编程中,回调函数是一种设计模式,它允许一个对象在另一个对象...在给定的示例中,`Button.java`和`OnButtonClickListener.java`展示了如何通过接口来实现回调,而`CallMeTest.java`则可能是测试回调功能的代码。
标题"java中回调函数的简单实现"主要探讨的是如何在Java中应用回调函数的概念,以便让程序更加灵活和可扩展。下面我们将深入探讨回调函数的基本原理、应用场景以及如何在Java中实现回调。 首先,回调函数的主要优点...
3. **Java回调处理类** 创建一个Java类,用于处理来自企业微信的回调请求。这个类通常需要实现HTTP服务端点,例如使用Spring Boot的`@RestController`注解。在接收到POST请求后,解析请求体,通常是JSON格式的数据...
Java面试如何用Java实现一个回调函数
Java回调是一种设计模式,它是当一个对象调用另一个对象的方法时,被调用对象通过某种方式在完成操作后反过来调用调用者的方法,这种机制就是回调。在Java中,回调通常通过接口或者抽象类来实现。这篇"给初学者的...
在Java编程中,回调方法是一种设计模式,它允许我们在代码执行过程中插入自定义的行为,特别是在异步编程或者事件处理中非常常见。...进一步研究这些文件将有助于加深对Java回调方法的理解和实践。
在Java支持方法指针之前,Java接口不能提供一种实现回调的好方法。如果您习惯于传递在事件驱动编程模型中调用的函数指针,则您会喜欢本技巧。 熟悉MS-Windows和X Window System事件驱动编程模型的开发人员,习惯...
在Java中,回调并不是语言内置的特性,但可以通过接口、匿名内部类或Java 8引入的Lambda表达式来实现。 首先,我们来看如何使用接口实现回调。假设有一个`Calculator`接口,它定义了一个`calculateDone`方法: ```...
在Java中,我们可以使用接口或者匿名内部类来实现回调机制。 首先,我们需要理解什么是回调。回调是一种编程技术,当一个函数执行完毕后,它会调用另一个预先指定的函数,这个被调用的函数就是回调函数。在Java中,...
在Java中实现微信企业号回调,首先需要设置好微信企业号的开发者配置,包括填写正确的AppID、AppSecret以及回调URL。这些信息通常在微信企业号的管理后台进行设置。然后,我们需要创建一个可以监听并处理POST请求的...
在Java编程中,接口回调是一种常见的设计模式,用于实现异步操作或者事件处理。当我们谈论“Java接口回调”时,核心思想是:一个类通过实现特定接口,将自身的某个方法暴露给其他对象调用,当特定事件发生或任务完成...
Java回调函数是编程中一种非常重要的设计模式,它允许一个对象在另一个对象完成特定操作后进行通知或执行相应的处理。这种机制使得代码更加灵活,解耦了调用者和被调用者的依赖关系,通常用于事件处理、异步编程、...
在标题提及的“[iOS]Objective-C利用协议实现回调函数(类似java的回调函数)”中,我们主要讨论的是Objective-C如何通过协议(Protocol)来实现类似于Java中的回调函数功能。这种机制对于异步编程、事件处理以及...
本话题将深入探讨如何在Android中使用JNI进行多线程编程,并实现native方法对Java函数的回调。 1. **JNI基础知识**: - JNI是Java平台的一部分,为Java应用程序提供了与本地代码交互的能力。开发者可以通过JNI在...
1. **接口与回调**:在Java和Android中,回调通常通过接口实现。一个类实现接口,并定义接口中声明的方法,当需要回调时,调用者通过接口实例来调用这些方法。例如,`OnClickListener`接口用于处理视图的点击事件。 ...
总的来说,Java回调是程序设计中的一个重要概念,它涉及到了事件处理、异步编程以及函数式编程等多个方面。理解并熟练运用回调机制,能够帮助开发者编写出更加灵活、可维护的代码。在实际开发中,合理地利用回调能够...
在"C++使用JNI多线程回调java代码例子"中,虽然具体实现没有提供,但我们可以想象一个典型流程: 1. **初始化JNIEnv**:在C++中,我们需要获取到`JNIEnv`指针,这是JNI的核心,提供了调用Java方法和访问Java对象的...
为了实现更灵活的回调,可以在Java中定义一个接口,让C代码通过实现该接口的本地方法来触发Java回调。在C代码中,可以创建一个Java对象并设置其为接口的实现,然后通过Java对象调用接口方法。 5. **线程本地存储...
Java多线程实现 自定义 的 回调函数. 手写 完成,亲测 完成,可以 直接运行,Demo ,具有一定参考价值,供大家阅读 下载,谢谢
在这个场景中,JNI被用来实现Java程序对摄像头的控制,以及处理来自C代码的回调。 首先,我们需要理解JNI的工作原理。JNI提供了一套接口,使得Java代码可以生成本地方法调用,这些方法可以是用C或C++编写的。在Java...