package heima.方法引用;
public class PrintableDemo {public static void main(String[] args) {//在主方法中调用usePrintable方法
// usePrintable((String s )->{// System.out.println(s);
// });
usePrintable(s->System.out.println(s));
//方法引用符::: (可推导的就是可省略的)
usePrintable(System.out::println);
}
private static void usePrintable(Printable p){p.printString("爱生活爱Java");
}
}
方法引用符
它的使用,同上一个案例
package heima.方法引用.Lambda表达式支持的方法引用;
public class ConverterDemo {public static void main(String[] args) {//在主方法中调用useConverter方法
// useConverter((String s)->{// return Integer.parseInt(s);
// });
// useConverter(s->Integer.parseInt(s));
//引用类方法
useConverter(Integer::parseInt);
//Lambda表达式被类方法替代时,它的形式参数全部传递给静态方法作为参数
}
private static void useConverter(Converter c){int num = c.convert("666");
System.out.println(num);
}
}
引用对象的实例方法package heima.方法引用.引用类的实例方法;
public interface Printer {void printUpperCase(String s);
}
package heima.方法引用.引用类的实例方法;
public class PrintString {//把字符串参数变成大写的数据,然后在控制台输出
public void printUpper(String s){String result = s.toUpperCase();
System.out.println(result);
}
}
package heima.方法引用.引用类的实例方法;
public class PrinterDemo {public static void main(String[] args) {//在主方法中调用usePrinter方法
// usePrinter((String s)->{String result = s.toUpperCase();
System.out.println(result);
// System.out.println(s.toUpperCase());
// });
usePrinter(s->System.out.println(s.toUpperCase()));
//引用对象的实例方法
PrintString ps = new PrintString();
usePrinter(ps::printUpper);
}
private static void usePrinter(Printer p){p.printUpperCase("HelloWorld");
}
}
输出:
package heima.方法引用.引用类的实例方法;
public class MyStringDemo {public static void main(String[] args) {//在主方法中调用useMyString方法
useMyString((s,x,y)->s.substring(x,y));
//引用类的实例方法
useMyString(String::substring);
}
private static void useMyString(MyString my){String s = my.mySubString("HelloWorld",2,5);
System.out.println(s);
}
}
package heima.方法引用.引用类的实例方法;
public interface MyString {String mySubString(String s,int x,int y);
}
引用构造器package heima.方法引用.引用构造器;
public class Student {private String name;
private int age;
public Student() {}
public Student(String name, int age) {this.name = name;
this.age = 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;
}
}
package heima.方法引用.引用构造器;
public interface StudentBuilder {Student build(String name,int age);
}
package heima.方法引用.引用构造器;
public class StudentDemo {public static void main(String[] args) {//在主方法中调用useStudentBulder方法
useStudentBulder(((name, age) ->new Student(name,age)));
//引用构造器
useStudentBulder(Student::new);
}
private static void useStudentBulder(StudentBuilder sb){Student s = sb.build("小林",30);
System.out.println(s.getName()+','+s.getAge());
}
}
输出:
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧