java方法引用
一、方法引用
1、概述
示例:
package com.itbianma04; public class Demo { public static void main(String[] args) { usePrinttable(s-> System.out.println(s)); usePrinttable(System.out::println); } private static void usePrinttable(Printable p) { p.printString("爱生活"); } }
2、方法引用符
二、lambda表达式支持方法引用
1、常用的引用方式
2、引用类方法
代码实现:
package com.itbianma05; public class Demo { public static void main(String[] args) { useConverter(s ->Integer.parseInt(s) ); useConverter(Integer::parseInt); } private static void useConverter(Converter c){ int number=c.convert("666"); System.out.println(number); } }
3、引用对象的实例方法
package com.itbianma06; public class Demo { public static void main(String[] args) { //实例方法实现 PrintString ps=new PrintString(); ps.printUpper("sss"); //使用lambda表达式实现 usePrinter(x-> ps.printUpper(x)); usePrinter(x-> System.out.println(x.toUpperCase())); //使用方法引用实现 usePrinter(ps::printUpper); } private static void usePrinter(Printer p){ p.printUpperCase("ddd"); } }
4、引用类的实例方法
package com.itbianma07; public class Demo { public static void main(String[] args) { useMyString((s, x, y) -> { return s.substring(x, y); }); useMyString((s, x, y) -> s.substring(x, y)); useMyString(String::substring); } private static void useMyString(MyString m) { String result = m.mySubString("hello,world", 1, 3); System.out.println(result); } }
5、引用构造器
package com.itbianma08; public class Demo { public static void main(String[] args) { useStudentBuilder((s,x)->new Student(s,x)); useStudentBuilder(Student::new); } private static void useStudentBuilder(StudentBuilder s) { Student stu = s.build("xiaoming", 12); System.out.println(stu.getName() + " " + stu.getAge()); } }