转自:
java 接口。Android Interface 自定义接口回调
不是很懂java 的Interface 接口的具体怎么实现的。在网上看了很多例子,终于理解了那么点啊。
因为原来在学习做一个微信的语音功能要做到一个接口功能。微信的后面有时间会写出来。
Interface 主要用来描述这类具有什么功能,而并不能给出每个功能的具体是实现。一个类可以实现多个接口,并在需要接口的地方,随时使用实现了相应接口的对象。
p.s.interface一定是public
下面的例子就是自己写的一个例子可以尝试着自己写一个:
接口回调的典型例子就是Android的Button监听事件了,
button.setOnClickListener(new OnClickListerner({
@Override
public void onClick(View v) {
System.out.println("调用回调函数");
}
});
button的点击就是触发了回调的对象。
当用户点击Button的时候,接口函数被回调。所以可以这样子理解java callback,当条件成立了,或者是触发了某个条件,而引起了函数的回调。这个就是我对Interface接口的理解。
所以我们首先需要写一个Interface接口叫CallListener,然后写一个能调用该接口函数的类,叫做Call最后写一个用到Call类对象调用监听的NeedCall类。
接口类:
public interface CallListener {
public void finishCall();
}
Call类:
public class Call {
CallListener callListener; //定义接口对象
public void setOnCallListener(CallListener listener){ //接口对象构造(接口没有实例化,因为没有具体方法)
this.callListener=listener;
}
/*
* 触发接口的回调方法,相当于button的点击触发,在主类方法调用该方法触发回调
*/
public void onCall(){
callListener.finishCall();
}
}
NeedCall类:
public class NeedCall {
public static void main(String[] args) {
Call call=new Call(); //Call类的实例化
call.setOnCallListener(new CallListener() {
@Override
public void finishCall() {
System.out.println("对接口方法的重写,调用回调函数时调用该回调函数");
}
});
call.onCall(); //真正触发回调的方法。
}
}
总结一下,要触发接口就是要构成触发接口的方法 。就像你要去监听一个人是否离开房间,就开一个口子传字条(相当于定义一个接口),再定义一个可以调用该接口的方法,最后那个人离开时触发你的监听条件。你只需要看着口子就可以,一旦条件触发,就构成了回调了。