package com.mayikt.service;
/**
* @ClassName MessageInterface
* @Author 蚂蚁课堂余胜军 QQ644064779 www.mayikt.com
* @Version V1.0
**/
@FunctionalInterface
public interface MessageInterface {
String get(Integer a, Integer b);
}
package com.mayikt.method;
import com.mayikt.service.MessageInterface;
/**
* @ClassName Test012
* @Author 蚂蚁课堂余胜军 QQ644064779 www.mayikt.com
* @Version V1.0
**/
public class Test012 {
public static void main(String[] args) {
// 1.最原生匿名内部类调用方式
// MessageInterface messageInterface = new MessageInterface() {
// @Override
// public void get(Integer a) {
// System.out.println("geta:" + a);
// }
// };
// messageInterface.get(1);
// 在Lambda表达式中方法体直接引入方法
// MessageInterface messageInterface2 = (a) -> Test012.staticGet(a);
// // 方法引入 --实际上就是我们 Lambda表达式中方法体直接引入方法---
// messageInterface2.get(2);
// // 方法引入写法
// MessageInterface messageInterface3 = Test012::staticGet;
// messageInterface3.get(10,20);
/**
*Test012::staticGet为何能够等于
* (a) -> Test012.staticGet(a);
*/
}
public static String staticGet(Integer a, Integer b) {
System.out.println("staticGet,a:" + a);
return "123456";
}
}
package com.mayikt.method;
import com.mayikt.service.MessageInterface;
/**
* @ClassName Test013
* @Author 蚂蚁课堂余胜军 QQ644064779 www.mayikt.com
* @Version V1.0
**/
public class Test013 {
public static void main(String[] args) {
Test013 test013 = new Test013();
// MessageInterface messageInterface = new MessageInterface() {
//
// @Override
// public String get(Integer a, Integer b) {
// return test013.objGet(a, b);
// }
// };
//
// String s = messageInterface.get(1, 2);
// System.out.println(s);
// MessageInterface messageInterface2 = (a, b) -> test013.objGet(a, b);
MessageInterface MessageInterface3 = test013::objGet;
String s = MessageInterface3.get(1, 2);
System.out.println(s);
}
public String objGet(Integer a, Integer b) {
System.out.println("objGet,a:" + a + ",b:" + b);
return a + b + "";
}
}