函数式接口与普通接口的区别


Java是一项面向对象的语言,所有的存在都是对象

比如: 猫可以抽象为一个对象, 狗可以抽象为一个对象, 动物可以抽象为一个更高层级的对象

但猫吃饭这件事, 如果用传统的Java思想来抽象,那它最应该是猫的一个行为,应该是猫对象中的一个函数/方法.

函数式接口另辟蹊径, 就是要把行为也抽象为一个对象.

接口声明:

@FunctionalInterface
public interface IAddService {
String add ();
}

接口使用:

public class App {
public static void main (String[] args) {
User ming = new User();
User hong = new User();
String mr = ming.calc(() -> {
return "ming";
});
System.out.println(mr); // mr: ming
String hr = hong.calc(() -> {
return "hong";
});
System.out.println(hr); // hr: hong
}
}


接口程序走向:

1. 定义了2个人,ming和hong,它们都调用了calc方法,calc方法接收一个函数式接口实例, 调用这个函数对象的add方法,将返回值返回

public String calc(IAddService addService){
return addService.add();
}

2. 当将"()->{}"当参数传入时, 就相当于将ming的行为封装为一个IAddService实例传入了calc方法

3. 函数式接口的效果有点类似于策略设计模式, 只不过不需要创建策略类,也不需要选择策略

4. 函数式接口的使用有点类似于匿名内部类, 函数逻辑放在参数列表中

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM