网站备案流程实名认证,天美影视传媒有限公司招聘,免费空间注册网站,洛阳网站建设首选洛阳铭信科技前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页#xff1a;KC老衲爱尼姑的博客主页 博主的github#xff0c;平常所写代码皆在于此 共勉#xff1a;talk is cheap, show me the code 作者是爪哇岛的新手#xff0c;水平很有限KC老衲爱尼姑的博客主页 博主的github平常所写代码皆在于此 共勉talk is cheap, show me the code 作者是爪哇岛的新手水平很有限如果发现错误一定要及时告知作者哦感谢感谢 文章目录 方法引用1. 静态方法引用2. 引用对象的实例方法3. 引用类的实例方法4. 构造器引用 方法引用
Java8引入了方法引用,其使用场景是,当我们使用lambda时,如果方法体中只有一个方法调用(包括构造方法),我们可以使用方法引用进一步简化代码。Java8中提供了四种不同类型的方法引用:静态方法引用,实例方法引用,构造方法引用。下面我们就来介绍这些方法引用。
1. 静态方法引用
基本格式类名::方法名
使用前提
如果我们在重写方法的时候方法体中只有一行代码并且这行代码是调用了某个类的静态方法并且我们把要重写的抽象方法中所有的参数都按照顺序传入了这个静态方法中这个时候我们就可以引用类的静态方法。
示例代码
public class Demo8 {public static void main(String[] args) {ListUser users Arrays.asList(new User(张三, 2222), new User(李四, 3333), new User(王五, 4444));ListInteger collect users.stream().map(user - user.getPassword()).map(Integer::valueOf).collect(Collectors.toList());System.out.println(collect);}
}2. 引用对象的实例方法
基本格式:对象名::方法名
使用前提
如果我们在重写方法的时候方法体中只有一行代码并且这行代码是调用了某个对象的成员方法并且我们把要重写的抽象方法中所有的参数都按照顺序传入了这个成员方法中这个时候我们就可以引用对象的实例方法
示例代码
public class Demo8 {public static void main(String[] args) {ListUser users Arrays.asList(new User(张三, 2222), new User(李四, 3333), new User(王五, 4444));StringBuilder sb new StringBuilder();//创建对象users.stream().map(user-user.getUsername()).forEach(sb::append);//使用方法}
}3. 引用类的实例方法
基本格式:类名::方法名
使用前提
如果我们在重写方法的时候方法体中只有一行代码并且这行代码是调用了第一个参数的成员方法并且我们把要重写的抽象方法中剩余的所有的参数都按照顺序传入了这个成员方法中这个时候我们就可以引用类的实例方法。
示例代码
public class Demo9 {public static String subAuthorName(String str, UseString useString){int start 0;int length 1;return useString.use(str,start,length);}public static void main(String[] args) {subAuthorName(bbbb, String::substring);}interface UseString{String use(String str,int start,int length);}
}4. 构造器引用
如果方法体中的一行代码是构造器的话就可以使用构造器引用。
基本格式:类名::new
使用前提
如果我们在重写方法的时候方法体中只有一行代码并且这行代码是调用了某个类的构造方法并且我们把要重写的抽象方法中的所有的参数都按照顺序传入了这个构造方法中这个时候我们就可以引用构造器。
示例代码
public class Demo8 {public static void main(String[] args) {ListUser users Arrays.asList(new User(张三, 2222), new User(李四, 3333), new User(王五, 4444));users.stream().map(User::getUsername).map(StringBuilder::new).map(sb-sb.append(cdd).toString()).forEach(System.out::println);}
}各位看官如果觉得文章写得不错点赞评论关注走一波谢谢啦。