当前位置:编程学习 > JAVA >>

给个Java接口回调的例子

如题,有代码最好。
答案:/**
* 回调接口
*/
interface TestTemplateCallBack {
Object doSomething();
}

class Template2 {

/**
* 执行业务逻辑的方法,参数类型为接口对象
*
* @param callBack:TestTemplateCallBack接口对象
*/
public void execute(TestTemplateCallBack callBack) {
try {
System.out.println("事务开始。。。");
System.out.println("开始执行业务逻辑。。。");
callBack.doSomething();
System.out.println("业务逻辑执行成功,提交事务");
} catch (Exception e) {
System.out.println("出现错误,回滚");
e.printStackTrace();
}
}
}

public class TemplateTest2 {
public void insert(final String msg) {
Template2 t = new Template2();
// 匿名内部类重写方法
t.execute(new TestTemplateCallBack() {
public Object doSomething() {
// 事务出错代码
// int i = 1 / 0;
System.out.println("插入数据:" + msg);
return null;
}
});
}

public static void main(String[] args) {
TemplateTest2 t = new TemplateTest2();
t.insert("Hello");
}
}
在这里申明一个接口,里面有个方法doSomething()。Template2 这个类中的execute()方法用来执行事务,其中有个参数:execute(TestTemplateCallBack callBack),参数类型为之前定义的接口对象,然后就可以利用这个对象来调用doSomething()方法。但是doSomething()方法具体的操作内容在哪呢?它在TemplateTest2的insert()方法里面,这里在TemplateTest2类中定义一个insert()方法,接着申明一个Template2对象t,当执行t.execute()方法的时候,这时我们写个匿名类来当传入参数,这匿名类就是之前的接口,在匿名类中重写doSomething()方法就可以实现具体操作了。

实际的列子可以参考spring源码中的JdbcTemplate类。

上一个:java编程题 关于考试成绩排名
下一个:Vista系统下如何设置Java环境变量

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,