重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你好,我写了个很简单的代码,你一看就明白了
创新互联-云计算及IDC服务提供商,涵盖公有云、IDC机房租用、德阳服务器托管、等保安全、私有云建设等企业级互联网基础服务,联系热线:18980820575
public class A {
int value = 1001;
public A() {// A的构造函数,执行B的exec()方法,里面又带有对A的getValue()方法调用,这个就叫做回调
B b = new B(this);
b.exec();
}
public int getValue() {
return value;
}
public static void main(String[] args) {
new A();//构造函数里已经发生了回调,所以不需要更多的代码
}
}
class B {
private A a;
public B(A a) {
this.a = a;
}
public void exec() {
System.out.println(a.getValue());// 这里调用了a的getValue()方法
}
}
简单的你会写,那就好办,直接上代码
public interface TestAPI extends StdCallLibrary {
interface LoginReply extends StdCallCallback {
/**
* 登录回调
*/
void invoke(String userId, long retCode, String retMsg);
}
/**
* 注册一个登录回调方法.此方法是dll提供的
*/
void RegisterLoginReply(LoginReply loginReply);
}
/**
* 实现登录回调方法
*/
private class LoginReplyCallBack implements TestAPI.LoginReply {
@Override
public void invoke(String userId, long retCode, String retMsg) {
log.info("登录回调方法:{},{},{}", userId, retCode, retMsg);
}
}
// 设置登录回调
api.RegisterLoginReply(loginReplyCallBack);
这不是回调函数;
是一个匿名实现类;
报错的话可能是接口里面的方法没有实现;
比如:
new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
}
};
就必须实现Runnable里面的方法~
希望对你有所帮助~