Skip to content

Latest commit

 

History

History
72 lines (52 loc) · 1.32 KB

New features about Java 8.md

File metadata and controls

72 lines (52 loc) · 1.32 KB

New features about Java 8

Default method in interface

  • 接口中可以有具体方法实现,需要加上default关键字。接口和抽象类的用法是否越来越接近,有待研究。

Lambda

  • 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));

Functional Interface

Invoke method or constructor

  • 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.

Lambda scope

Local variable in lambda