今天学习了java8下构造函数,静态方法,方法的新用法,并且分享出源码,大家共同学习 import lombok.AllArgsConstructor; import lombok.Builder; import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor @Builder public class Person { private String firstName; private String lastName; }
public class SomeThing { String startWith(String s){ return String.valueOf(s.charAt(0)); } }
@FunctionalInterface public interface PersonFactory<P extends Person> { P create(String firstName,String lastName); }
@FunctionalInterface public interface IConvert<F,T> { T convert(F from); }
public class IConvertTest { /** * 方法和构造函数引用 * java8可以让你通过关键字::来传递方法和构造函数的引用。 */ @Test public void staticMethodQuote(){ IConvert<String,Integer> convertor = Integer::parseInt; int converted = convertor.convert("1233"); System.out.println(converted); } @Test public void quoteObjectMethod(){ SomeThing something = new SomeThing(); IConvert<String,String> convert =something::startWith; convert.convert("abc"); } //引用构造函数 @Test public void quoteConstructorMethod() { //不使用通常的手动实现工厂类,通过使用构造函数将所有的工作联合在一起 //通过Person::new创建一个指向Person构造函数的引用。 //java编译器自动的选择正确的构造函数来匹配PersonFactory.create的函数签名。 PersonFactory<Person> factory = Person::new; Person p = factory.create("zhuge", "xx"); System.err.println(p); } }