`
云上太阳
  • 浏览: 131315 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java回调终结贴

阅读更多

java回调终结贴

                                                                                                        ——我一直不太信任自己的记忆力,所以我把它们都写下来 

   

    写程序不明白回调的难听点说真的都没有入门,事件驱动的基本上都是回调实现,比如Android中按钮点击,Swing中的按钮点击,回调运用的地方真的太多了,必须得拿下。可是回调就是那么绕,一时让人摸不着头脑。下面两个例子一定会让你明白回调。

第一个例子我们以android点击按钮为例

    Button.class

 

/**
 * 这是一个按钮
 * @author albert
 *
 */
public class Button {
        //点击按钮
	public void click(ClickListener listenner){
		listenner.onClick();
	}
}

 点击事件接口,供Button的click事件使用

/**
 * 模拟事件处理,具体点击后的算法给实现者
 * @author albert
 *
 */
interface ClickListener{
	public void onClick();
}

 下面是在一个Activity上点击按钮的具体处理

 

 

/**
 * 模拟android中的界面(里面可以添加Button等)
 * @author albert
 *
 */
public class Activity {
	public static void main(String[] args) {
		Button btn = new Button();
		btn.click(new ClickListener() {
			@Override
			public void onClick() {
				System.out.println("这里具体实现点击后要执行的算法");
			}
		});
	}
}

 运行Activity后控制台打印一段文字。不知道这个大家有没有看明白,这个是具体的实际操作过程,我们再抽象下。

 

 

public class A {
	public void func(CallBack callBack){
		callBack.call();
	}
}
/**回调接口*/
interface CallBack{
	public void call();
}

 

 

具体的实现类B

public class B {
	public static void main(String[] args) {
		A a = new A();
		a.func(new CallBack() {
			@Override
			public void call() {
				System.out.println("这里具体实现点击后要执行的算法");
			}
		});
	}
}

 

 

上面两个例子应该很好理解了吧,然后B类可以改良下

 

public class B implements CallBack{
	public static void main(String[] args) {
		B b = new B();
		A a = new A();
		a.func(b);
	}

	@Override
	public void call() {
		System.out.println("让B实现callback接口");
	}
}

 

 

1
0
分享到:
评论

相关推荐

    jna java 调用c动态库

    它能够自动处理基本类型、数组、结构体、枚举等,并支持回调(函数指针)。此外,JNA还提供了Platform类,可以根据运行时的操作系统自动选择正确的库名称。 虽然JNA简化了Java调用本地代码的过程,但它并不总是最快...

    JAVA-内存模型.docx

    操作完成后,通常会通过回调、事件等方式通知调用者。 #### 六、可见性和可排序性 **6.1 可见性(Visibility)** 在Java内存模型中,可见性是指当一个线程修改了共享变量的值,其他线程能够立即看到这个修改。...

    网上书店开发设计

    8. **支付接口集成**:对于购物功能,需要集成第三方支付接口,如支付宝、微信支付等,这涉及API调用、异步回调处理以及支付状态的跟踪。 9. **测试与部署**:项目开发完成后,需要进行单元测试、集成测试和性能...

    Java并发编程实战

    12.1.5 使用回调213 12.1.6 产生更多的交替操作214 12.2 性能测试215 12.2.1 在PutTakeTest中增加计时功能215 12.2.2 多种算法的比较217 12.2.3 响应性衡量218 12.3 避免性能测试的陷阱220 12.3.1 垃圾回收...

    JAVA程序员面试32问,你能回答多少题

    - 可以实现一个或多个接口,这是匿名内部类常用的功能,常用于快速实现简单接口的回调。 3. **Static Nested Class 和 Inner Class** - Static Nested Class(静态嵌套类)是静态成员类,可以独立于外部类实例...

    liblinphone-android-javadoc文档

    7. **示例代码** - 可能包含示例代码片段,展示如何在实际项目中集成liblinphone,如初始化、设置回调、处理通话等。 8. **错误处理和调试** - 如何识别和解决在开发过程中遇到的问题,以及如何利用liblinphone的...

    axis2客户端数据传送方式.doc

    基本步骤与阻塞方式相同,但调用 `sendReceiveNonBlocking()` 并传递回调对象: ```java // 创建并实现 AxisCallback 的回调类 Callback callback = new Callback() { public void onComplete(AsyncResult ...

    websocket消息推送消息.zip

    客户端也需要定义一个回调接口,处理接收到的消息。 4. **消息编码与解码**:WebSocket协议支持多种数据类型,包括文本和二进制数据。Java中的`javax.websocket.Encoder`和`javax.websocket.Decoder`接口用于将Java...

    JAVAEEWEB高级编程期末考试复习资料.pdf

    EJB 通过以下三种机制与容器交互:回调方法、EJBContext、Java 命名和目录接口(JNDI)。EJB 组件可分为三种主要类型:会话 Bean、实体 Bean、消息驱动 Bean。 4. JDBC 技术 JDBC 是一组 API,定义了用来访问数据源...

    nfdiv-case-api:后台Java服务处理案例管理系统

    无故障离婚案例API 该API处理来自CCD的NO_FAULT_DIVORCE案例类型的回调。构建和部署应用程序构建应用程序该项目使用作为构建工具。 它已经包含./gradlew包装器脚本,因此无需安装gradle。 要构建项目,请执行以下...

    JVM与性能优化知识点整理.pdf

    - **常见异步的手段**:包括但不限于事件驱动、回调函数、Future/Promise等。 - **集群**:通过构建服务器集群可以提高系统的可用性和负载均衡能力。 - **应用相关** - **代码级别**:优化代码逻辑,减少不必要的...

    高手总结的9种OOM常见原因及解决方案.docx

    * 过度使用终结器(Finalizer),该对象没有立即被GC。 * 内存泄漏(Memory Leak),大量对象引用没有释放,JVM无法对其自动回收。 解决方案: * 调高JVM堆内存空间通过-Xmx参数。 * 检查超大对象的合理性。 * ...

    基于JainSip的聊天室程序

    JainSip提供线程池和回调机制,帮助开发者处理并发问题。 7. **安全性**:在实际应用中,聊天室需要考虑用户隐私和数据安全。JainSip支持通过SIP over TLS(Transport Layer Security)和SRTP(Secure Real-time ...

    android调用.net的webservice

    在`onFailure`回调中捕获异常并进行适当的错误处理。 - **安全性**:确保通过HTTPS连接到Web服务以保护数据传输的安全。 - **数据格式**:确认.NET Web服务返回的数据格式(如XML或JSON)与Android客户端能够正确...

    教你分析9种OOM常见原因及解决方案.docx

    * 解决方案:通过 -Xmx 参数调高 JVM 堆内存空间、检查大对象的合理性、添加机器资源、做限流降级、找到持有的对象、修改代码设计 2. GC Overhead Limit Exceeded 错误 * 原因分析:应用程序已经基本耗尽了所有...

    SipClient:Sip客户端用于开发和测试目的

    SipClient可能使用Java的监听器和回调机制来处理SIP事件,如接收到的请求、响应或者错误。 5. **多媒体处理**:虽然SIP主要负责会话控制,但实际的音频/视频流通常由其他协议如RTP(Real-time Transport Protocol)...

    jain sip api

    4. **事件处理**:理解如何处理SIP事件,如定时器事件、重传事件、接收新消息事件等,这通常涉及注册事件监听器并实现相关回调方法。 5. **错误处理**:学习如何处理SIP协议中的错误情况,例如错误响应、重试策略和...

    babylon:使用Retrofit2.0,Butterknife,OrmLite和Picasso构建的示例应用程序

    通过Retrofit回调(将从端点提供数据),将包含联系人头像的sendbroadcast发送给Activity,后者将处理该意图。 游标加载程序将管理列表中名字和姓氏的显示,并且头像将填充图像视图(在这种情况下,我们不将图像...

    sscs-track-your-appeal-notifications

    用于使用回调启动通知请求。先决条件JDK 8构建和部署应用程序构建应用程序要构建项目,请执行以下命令: ./gradlew build运行应用程序通过执行以下命令运行应用程序: ./gradlew bootRun在Docker中运行通过执行以下...

    civil-damages-service

    民事损坏CCD回调服务。 内容: 构建和部署应用程序 依存关系 该项目取决于其他民事损害赔偿库: 要为民事损害赔偿建立完整的本地环境,请检查 构建应用程序 该项目使用作为构建工具。 它已经包含./gradlew包装器脚本...

Global site tag (gtag.js) - Google Analytics