课时131:方法引用
摘要:本内容是Java面向对象编程 方法引用的介绍。
1.1 方法引用的概念
方法引用的操作是在Lamda的表达式基础之上的扩充。
引用数据类型最大的特点是可以进行内存的指向处理,但是在传统的开发之中一直所使用的只是对象引用操作,而从JDK1.8之后也提供有方法的引用,即:不同的方法名称可以描述同一个方法。
1.2 方法引用的形式
如果要进行方法的引用在Java里面提供有如下的四种形式:
(1) 引用静态方法:类名称::static方法名称;
(2) 引用某个实例对象的方法:实例化对象::普通方法;
(3) 引用特定类型的方法:特定类::普通方法;
(4) 引用构造方法:类名称::new。
1.3 方法引用形式的范例
(1)范例:引用静态方法
a. 在String类里面提供String.valueOf()方法,这个方法就属于静态方法。
b. 方法定义:public static String valueOf(int i),该方法有参数并且还有返回值;
@FunctionalInterface //函数式接口 // P描述的是参数、R描述的是返回值 interface IFunction<P,R>{ public R change(p p); } public class JavaDemo{ public static void main(string args[]){ IFunction<Integer,String>fun = String ::valueOf; String str = fun.change(100); System.out.println(str.length()); } }
利用方法引用这一概念可以为一个方法定义多个名字,但是要求必须是函数式接口。
(2)范例:引用实例化对象中的方法
a. 在String类里面有一个转大写的方法:public String toUpperCase();
b. 这个方法是必须在有实例化对象提供的情况下才可以调用;
@FunctionalInterface //函数式接口 // P描述的是参数、R描述的是返回值 interface IFunction<R>{ public R upper(); } public class JavaDemo{ public static void main(string args[]){ IFunction<String>fun ="www.mldn.cn" ::toUpperCase ; System.out.println(fun.upper()); } }
在进行方法应用的时候也可以引用特定类中的一些操作方法,在Sting类里面提供有字符串大小关系的比较。
c. 比较大小:public int compareTo(String anotherString);
这是一个普通方法,如果要引用普通方法,则往往都需要实例化对象,但是如果现在你不想给出实例化对象,只是想引用这个方法,则就可以使用特定类来进行引用处理。
(3)范例:引用指定类中的方法
@FunctionalInterface //函数式接口 //P描述的是参数、R描述的是返回值 interface IFunction<P>{ public int compare(p p1,P p2); } public class JavaDemo{ public static void main(string args[]){ IFunction<String>fun=String ::compareTo; System.out.println(fun.compare("A",“a")); } }
在方法引用里面最具有杀伤力的就是构造方法的引用
(4)范例:引用构造方法
class Person{ private String name; private int age ; public Person (string name,int age) { this.name =name; this.age =age; } public string tostring(){ return" 姓名:"+this.name +"、年龄:"+this.age ; } } @FunctionalInterface //函数式接口 interface IFunction<R> public R create(string s,int a); } public class JavaDemo { public static void main(string args[]){ IFunction<Person>fun=Person ::new ; System.out.println(fun.create("张三",20)); } }
提供方法引用的概念更多的情况下也只是弥补了对于引用的支持功能。