关键字interface:
目的:实现回调函数
涉及知识:内联匿名类
不同于C++中的函数指针,这里使用的是interface
eg:
#1 public interface IA{申明}
#2 B.Fn(new IA{实现}); @1
#3 public class B{
private IA callBack;
public void Fn(IA callBack) {
this.callBack = callBack;
}
通过callBack去做一些事情,这些事情的逻辑在上层被指定,
这些事情在下层被实现
}
@1 这种用法语法上称之为内联匿名类:
类名被隐藏,把它还原
class C implements IA{实现}
C mc =new C;
B.Fn(mc);// C 强制向上转换为IA
总结:如果我们看到了B.Fn(new IA{实现});这种结构,我们应立刻想到这是一个回调的用法
我们应该想到句子:
当...(条件为上层所写)做...(实现写在下层)
如:
btn.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
}
});
lwq原创 :>
目的:实现回调函数
涉及知识:内联匿名类
不同于C++中的函数指针,这里使用的是interface
eg:
#1 public interface IA{申明}
#2 B.Fn(new IA{实现}); @1
#3 public class B{
private IA callBack;
public void Fn(IA callBack) {
this.callBack = callBack;
}
通过callBack去做一些事情,这些事情的逻辑在上层被指定,
这些事情在下层被实现
}
@1 这种用法语法上称之为内联匿名类:
类名被隐藏,把它还原
class C implements IA{实现}
C mc =new C;
B.Fn(mc);// C 强制向上转换为IA
总结:如果我们看到了B.Fn(new IA{实现});这种结构,我们应立刻想到这是一个回调的用法
我们应该想到句子:
当...(条件为上层所写)做...(实现写在下层)
如:
btn.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
}
});
lwq原创 :>