JAVA学习日记: Lambda表达式(5)
今天学习了的主要内容:
1.方法引用的概念以及语法的特征 2.方法引用的使用
方法引用的概念以及语法的特征:
Lambda表达式不能独立存在,它通常都是赋值给一个函数式接口类型变量。 方法引用是指:使用已经存在的方法来创建Lambda表达式的一种简化方式。 作用:代码简化、易读、简明。 <限定>::<方法名> Magical<String> m3 = String::length; 将String里的length()方法引用过来。 该方法不会立即执行,他会在目标类型被调用时开始运行。 都有哪些方法引用类型: TypeName::staticMethod引用类、接口或枚举中的静态方法 objectRef::instanceMethod特定对象的实例方法 ClassName::instanceMethod类的任意对象的实例 TypeName.super::instanceMethod特定对象的超类的实例方法 ClassName::new类的构造方法 ArrayTypeName::new数组的构造方法
方法引用的使用:
方法引用在java8新增的对集合操作的Stream API中被大量的使用。
LambdaTest06类(测试方法引用):
package LessonForLambda05; @FunctionalInterface interface Magicable<T> { int getInt(T t); } public class LambdaTest06 { public static void main(String[] args) { //一般情况下的做法 Magicable<String> m1 = t->t.length(); //完整做法(推荐) Magicable<String> m2 = (String t)->{ return t.length();}; //接下来改写一下,若已经存在一个程序,并且具有符合逻辑的方法。 Magicable<String> m3 = String::length; System.out.println(m3.getInt("zlm")); Magicable<String> m4 = Integer::parseInt;//parseInt方法使字符串数字变成整型变量传出。 int v1 = m4.getInt("1234"); int v2 = v1+1234; System.out.println(v2); System.out.println(m4.getInt("1234")); } }