- 接口中可以有具体方法实现,需要加上default关键字。接口和抽象类的用法是否越来越接近,有待研究。
- Before Java 8
List<String> names = Arrays.asList("zhangsan","lisi","wangwu"); Collections.sort(names,new Collector<String>(){
@Override
public int compare(String a,String b) {
return b.compareTo(a);
}
});
- Now
Collections.sort(names, (a,b) -> b.compareTo(a));
- invoke static method
Integer::valueOf
- invoke instance method
exampleObject::exampleMethod
- invoke constructor
public class Person {
public String firstName;
public String lastName;
public Person(String firstName,String lastName){
this.firstName = firstName;
this.lastName = lastName;
}
}
public interface PersonFactory<P extends Person>{
P create();
}
public class PersonTest {
PersonFactory factory = Person::new;
Person person = factory.create();
}
We can get ref of Person constructor through Person::new
,and java compiler can select appropriate constructor to implement create method in PersonFactory according to method signature.