public interface PrintInterface { void print(String s); }
public class Demo { public static void main(String[] args) { show(s -> System.out.println(s)); // 方法引用符:"::"就会把上面方法里面的s传递给下面的println show(System.out::println); // 可推导的就是可省略的 } public static void show(PrintInterface printInterface){ printInterface.print("体验一下方法引用"); } }
public interface Convertor { int convert(String s); } public class ConvertorDemo { public static void main(String[] args) { // 1.Lamdba convert((String s)->{ int i = Integer.parseInt(s); return i; }); // 2.Lamdba省略 convert(s -> Integer.parseInt(s)); // 3.方法引用 convert(Integer::parseInt); // Lambda表达式被类方法引用替代时,她的形式参数全部传递给静态方法作为参数 } public static void convert(Convertor convertor) { int i = convertor.convert("888"); System.out.println(i); } }
public interface PrinterINterface { void toUpCase(String s); } public class Print { public void toUpCase(String s){ System.out.println(s.toUpperCase()); } } public class PrintDemo { public static void main(String[] args) { // 1.Lamdba表达式实现 toUpCase((String s)->{ System.out.println(s.toUpperCase()); }); // 2. 1.Lamdba表达式简写 toUpCase(s -> System.out.println(s.toUpperCase())); // 3.引用对象的实例方法 toUpCase(new Print()::toUpCase); // Lambda表达式被引用对象的实例方法替代时,她的形式参数全部传递给静态方法作为参数 } public static void toUpCase(PrinterINterface printInterface) { printInterface.toUpCase("hourumiyue"); } }
public interface Sub { String sub(String s, int x, int Y); } public class SubDemo { public static void main(String[] args) { sub((s,x,y)->s.substring(x,y)); sub(String::substring); // Lambda表达式被类的实例方法替代的时候 // 第一个参数作为调用者 // 后面的参数全部传递给该方法作为参数 } public static void sub(Sub sub) { String hourumiyue = sub.sub("hourumiyue", 2, 6); System.out.println(hourumiyue); } }
public class Student { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Student() { } public Student(String name, int age) { this.name = name; this.age = age; } }
public interface StuBulider { Student stuBulid(String name,int age); }
public class StuDemo { public static void main(String[] args) { stuBulide((name,age)->new Student(name,age)); stuBulide(Student::new); } public static void stuBulide(StuBulider stuBulider) { Student student = stuBulider.stuBulid("云舒", 18); System.out.println(student.getName()+student.getAge()); } }
原文:https://www.cnblogs.com/luzhanshi/p/13200136.html