jdk1.8 -- 方法推导 静态方法、实例方法、构造方法推导
一.静态方法的推导
public class MainTest { public static void main(String[] args) { // 正常情况下我们需要通过写一个consumer的方法来调用 testConsumer("abc",(s)->System.out.println(s)); System.out.println("====================="); //但是我们只是将一个内容输入,没必要这么麻烦,jdk1.8 已经为我们考虑到这样的写法 testConsumer("abc",System.out::println); //语法: // ContainingClass::staticMethodName } public static void testConsumer(String s,Consumer<String> c){ c.accept(s); }
}
二.实例方法推导
public class MainTest { public static void main(String[] args) { //2.实例方法的推导 // 通常情况我们要获取一个字符串的值应该这样获取 String value = "123"; String valueOf1 = String.valueOf(value); System.out.println("======== valueOf1 ====== "+valueOf1); //通过lambda 表达式可知,这其实就是一个FunctionInterface,而在jdk1.8中定义了特殊的写法 // 语法: // containingObject::instanceMethodName Function<String,String> f = String::valueOf; System.out.println("======== valueOf 2 ====== "+f.apply("123")); } }
三.构造函数推导
public class MainTest { public static void main(String[] args) { //3.构造函数推导 //3.1通常情况我们可以通过lambda推导来创建一个对象 testConstruct("red", 100,(s,w)->new Apple(s,w)); //3.2在jdk1.8 的lambda 中写法如下 BiFunction<String,Long,Apple> fApple = Apple::new; fApple.apply("red", 100L); //总结:构造函数其实就是一个静态方法而已,只不过是特殊的一个方法,为什么 new 一个对象还要这么麻烦 // 我们通过这种写法可以在jdk1.8后面的应用中可以更加的快捷和方便 } public static Apple testConstruct(String color,long weight,BiFunction<String,Long,Apple> f){ return f.apply(color,weight); } }
由于本人是自己学习总结出来的,有不足之处,请各位看官批评指出,我将及时改正,以提高知识总结的正确性和严谨性,为大家学习提供方便!!!
如若转载,请注明出处!!!