引用类方法
定义 :引用类方法,其实就是引用类的静态方法格式 :类名::静态方法 范例 :Integer::parseInt
public interface Converter {
int convert ( String s) ;
}
public class ConverterDemo {
public static void main ( String [ ] args) {
userConverter ( ( String s) -> {
return Integer . parseInt ( s) ;
} ) ;
useConverter ( s -> Integer . parseInt ( s) ) ;
useConverter ( Integer :: parseInt ) ;
}
private static void useConverter ( Converter c) {
int number = c. convert ( "666" ) ;
System . out. println ( number) ;
}
}
引用对象的实例方法
定义 :引用对象的实例方法,其实就是引用类中的成员方法格式 :对象::成员方法 范例 :“Hello World”::toUpperCase String类中的方法:public String toUpperCase()将此String所有字符转换为大写
public class PrintString {
public void printUpper ( String s) {
String result = s. toUpperCase ( ) ;
System . out. println ( result) ;
}
}
public interface Printer {
void printUpperCase ( String s) ;
}
public class PrinterDemo {
public static void main ( String [ ] args) {
userPrinter ( ( String s) -> {
String result = s. toUpperCase ( ) ;
System . out. println ( reslut) ;
} ) ;
PrintString ps = new PringString ( ) ;
userPrinter ( ps:: printUpper ) ;
}
private static void usePrinter ( Printer p) {
p. printUpperCase ( "HelloWorld" ) ;
}
}
引用类的实例方法
定义 :引用类的实例方法,其实就是引用 类中的成员方法格式 :类名::成员方法 范例 :String::substring String类中的方法:public String substring(int beginIndex, int endIndex)
public interface MyString {
String mySubString ( String s, int x, int y) ;
}
public class MyStringDemo {
public static void main ( String [ ] args) {
useMyString ( ( String s, int x, int y) -> {
return s. substring ( x, y)
} )
userMyString ( String :: substring ) ;
}
private static void useMyString ( MyString my) {
String s = my. mySubString ( "HelloWorld" , 2 , 5 ) ;
System . out. println ( s) ;
}
}
引用构造器
定义 :引用构造器,其实就是引用构造方法格式 :类名::new 范例 :Student::new
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 String getAge ( ) {
return age;
}
public void setAge ( int age) {
this . age= age;
}
}
public interface StudentBuilder {
Student bulid ( String name, int age) ;
}
public class StudentDemo {
public static void main ( String [ ] args) {
useStudentBuilder ( ( String name, int age) -> {
return new Student ( name, age) ;
} )
useStudentBuilder ( Student :: new ) ;
}
private static void useStudentBuilder ( StudentBuilder sb) {
Student s = sb. build ( "张三" , 20 ) ;
System . out. println ( s. getName ( ) + "," + s. getAge ( ) ) ;
}
}