Java的委托
委托是一个函数的引用,换句话说,它是函数的指针,通常,我们会为了代码的结构更清晰,定义很多函数引用(委托),然后传递委托。
java本质上是有委托的,但它没有外放,即便你java水平很高,研究了他的源代码,那你也找不到一个比较简单的办法让委托被使用和传递。
但java中有一个办法可以模拟委托,他就是匿名类,但他只能模拟匿名委托。
首先定义一个Callback_Comm 类
public class Callback_Comm {
public void call(String con){
}
}
然后编写函数。
public void test(Callback_Comm callback ){
new Thread(){
@Override
public void run(){
callback.call("kiba");
}
}.start();
}
然后模拟匿名委托调用。
test(new Callback_Comm(){
@Override
public void call(String con){
String ret=con;
}
});
道理很简单,就是调用方法时传递一个对象,然后在对象里,重载他的某一个方法。虽然代码有点多,但实现了匿名委托。
此外,我们还可以用lambda表达式,让这个匿名委托更加简便。
先定义一个接口ICallback_Comm。
public interface ICallback_Comm {
public void Call(String con);
}
然后让Callback_Comm 继承他。
然后test函数改为接受ICallback_Comm。
public void test(ICallback_Comm callback ){
new Thread(){
@Override
public void run(){
callback.call("kiba");
}
}.start();
}
然后模拟调用代码如下:
test(
con->{
String ret=con;
}
);
虽然这并不是真正的委托,但他的写法和用法,和匿名委托一般无二。
PS:Java的代码提示是分大小写的,如:User,我们再打U时会提示类名,打u时,不提示。
----------------------------------------------------------------------------------------------------
注:此文章为原创,任何形式的转载都请联系作者获得授权并注明出处!
若您觉得这篇文章还不错,请点击下方的【推荐】,非常感谢!

https://www.cnblogs.com/kiba/

浙公网安备 33010602011771号