Kiba518

Kiba518

三线城市架构师一枚。

Fork me on GitHub

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时,不提示。

----------------------------------------------------------------------------------------------------

注:此文章为原创,任何形式的转载都请联系作者获得授权并注明出处!
若您觉得这篇文章还不错,请点击下方的推荐】,非常感谢!

 

 

posted @ 2021-09-06 10:11  kiba518  阅读(4285)  评论(0编辑  收藏  举报