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/