public static void test1_() {只要方法的参数和返回值类型与函数式接口中抽象方法的参数和返回值类型一致,就可以使用方法引用。 方法引用主要有如下三种使用情况
List<String> strLst = new ArrayList<String>() {
{
add("adfkjsdkfjdskjfkds");
add("asdfasdfafgfgf");
add("public static void main");
}
};
Collections.sort(strLst, String::compareToIgnoreCase);
System.out.println(strLst);
}
- 类::实例方法
- 类::静态方法
- 对象::实例方法
class Father {最后打印的结果为:Hello, i am function in father!
public void greet() {
System.out.println("Hello, i am function in father!");
}
}
class Child extends Father {
@Override
public void greet() {
Runnable runnable = super::greet;
new Thread(runnable).start();
}
}
public static void main(String[] args){
new Child().greet();
}