JAVA回调

[b]接口回调:[/b] 实现了接口的类创建对象的引用赋值给接口变量,那么接口变量就可以调用接口实现类的方法,这就称为接口回调。(通知相应的对象调用相应的方法)


public interface CallBack {

void execute();
}



public class Tools {

public void testTime(CallBack callBack)
{
long begin = System.currentTimeMillis();
callBack.execute();
long end = System.currentTimeMillis();
System.out.println("used time:" + (end - begin));
}

public static void main(String[] args)
{
Tools tools = new Tools();
tools.testTime(new CallBack()
{
@Override
public void execute() {
// TODO Auto-generated method stub
// ......
for (int i = 0; i < 10000000; i++)
;
}
});

}
}


观察者模式:将观察者和被观察者的对象分离,是一种设计模式,大部分观察者模式 实现都采用回调。
### Java回调机制的使用示例 Java中的回调机制是一种通过传递对象或方法来实现事件驱动编程的模式。这种机制允许一个对象在特定事件发生时调用另一个对象的方法[^1]。以下是一个详细的代码示例,展示了如何在Java中实现回调机制: ```java // 定义接口ICallBack,包含需要被回调方法 public interface ICallBack { void postExec(String message); } // 实现接口的类MyClass public class MyClass implements ICallBack { @Override public void postExec(String message) { System.out.println("MyClass的postExec方法回调了:" + message); } } // 包含回调方法的类FooBar public class FooBar { private ICallBack callBack; // 设置回调对象 public void setCallBack(ICallBack callBack) { this.callBack = callBack; } // 模拟某个事件触发,调用回调方法 public void doSomething() { if (callBack != null) { callBack.postExec("事件已触发"); } } } // 测试类 public class Test { public static void main(String[] args) { FooBar foo = new FooBar(); // 使用匿名内部类设置回调 foo.setCallBack(new ICallBack() { @Override public void postExec(String message) { System.out.println("匿名类的postExec方法回调了:" + message); } }); // 触发事件并调用回调方法 foo.doSomething(); // 使用Lambda表达式简化回调实现(Java 8及以上版本) foo.setCallBack(result -> System.out.println("Lambda表达式的回调:" + result)); foo.doSomething(); // 使用具体实现类设置回调 MyClass myClass = new MyClass(); foo.setCallBack(myClass); foo.doSomething(); } } ``` 在这个示例中,`FooBar`类通过`setCallBack`方法接收一个实现了`ICallBack`接口的对象,并在`doSomething`方法中调用该对象的`postExec`方法[^5]。此外,还展示了如何使用匿名内部类和Lambda表达式来简化回调的实现[^2]。 ### 回调机制的优点 - **灵活性**:通过回调机制,可以将代码逻辑分离,使程序更加灵活。 - **可扩展性**:支持多种不同的实现方式,例如匿名类、Lambda表达式等。 - **代码复用**:通过接口或抽象类定义通用行为,便于代码重用[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值