java 回调 函数_Java函数回调机制简单使用

本文系作者原创,如需转载请注明出处!

一、简介

在之前学校中(现在在做Android),我就接触了和学习了Java函数回调机制,但是在实际项目中并没有使用过。

最近我在项目中用到,翻翻我的笔记(PS:这可是我的吃饭宝典),虽然现在做的是Android,废话不多说,切入正题:

Java函数回调,也许说的这么专业你并不知道它是干嘛,有啥用。实际上你都有用过,比如多线程的Thread接口就是最典型的例子,当你调用start()函数时,就会触发run()函数。是的,这就是运用的一种方式,下面通过例子来学习下,该如何使用。

这个例子就是实现这样一个功能:

有一个用户类User(属性有name名称和info描述),用户有个技能是编码,所以我们创建一个Code接口(接口中定义一个回调的函数)

创建一个接口具体业务逻辑类OutUser(提供一个接口属性Code code、提供一个设置code的实例函数setUser、提供一个createUser函数,通过该函数实现具体函数的调用)

创建一个接口实现类Realization,编写Code的具体实现

最后创建一个main入口的测试类Test

二、运用

1、创建一个用户User

/*** 描述:用户

* 作者: kimball

* E-mail: kimballlu@foxmail.com

* 日期:2016年11月14日 下午5:00:30

*/

public class User {

private String name;

private String info;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getInfo() {

return info;

}

public void setInfo(String info) {

this.info = info;

}

@Override

public String toString() {

return "User [name=" + name + ", info=" + info + "]";

}

}

2、先创建一个 接口Code,定义一个方法getOutStr(),类似Thread中的run()

/*** 描述:编码实现接口

* 作者: kimball

* E-mail: kimballlu@foxmail.com

* 日期:2016年11月14日 下午4:59:40

*/

public interface Code {

/*** 输出详细信息* @param user*/

public void getOutStr(User user);

}

3、创建接口具体业务逻辑类OutUser

/*** 描述:接口具体业务逻辑类

* 作者: kimball

* E-mail: kimballlu@foxmail.com

* 日期:2016年11月14日 下午5:25:53

*/

public class OutUser {

private Code code;

/*** 创建实例* @param code*/

public void setCode(Code code){

this.code = code;

}

/*** 创建用户* @param user*/

public void createUser(User user){

if(code != null){

/* 通过接口调用getOutStr输出详细信息 */

code.getOutStr(user);

}

}

}

4、创建一个接口实现类Realization

/*** 描述:Code接口实现类

* 作者: kimball

* E-mail: kimballlu@foxmail.com

* 日期:2016年11月14日 下午5:57:14

*/

public class Realization implements Code {

private static OutUser outUser;

public void a(){

outUser = new OutUser();

// 实例化outUser.setCode(this);

User newuser = new User();

newuser.setName("张三");

newuser.setInfo("张三在认真的进行编码工作");

outUser.createUser(newuser);

}

@Override

public void getOutStr(User user) {

// 此时会通过函数回调机制,之前创建的user会返回给该函数System.out.println(user.toString());

}

}

5、编写测试类

/*** 描述:测试类

* 作者: kimball

* E-mail: kimballlu@foxmail.com

* 日期:2016年11月14日 下午4:58:43

*/

public class test {

public static void main(String[] args) {

new Realization().a();

}

}

6、输出结果

三、结语

从上面的例子,不难看出,其实回调函数并不难,主要是理解。写代码也是一样的,只要你理解了,掌握了编码的思想,那就一切问题都不是问题


版权声明:本文为weixin_39970823原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。