52java 方法引用

248 阅读2分钟

方法引用

  • 方法引用介绍

最初只要进行引用基本上都是针对引用类型完成的,只有数组、类、接口具备,引用的操作,但是现在追加了方法引用的概念。实际上引用的本质就是别名。所以方法的引用也是别名的使用。

 

二、方法引用类型

方法引用的类型可分为四种;

  • 引用静态方法:类名称::static方法名称;
  • 引用某个对象的方法:实例化对象::普通方法;
  • 引用某个特定类的方法:类名称::普通方法;
  • 引用构造方法:类名称::new。

三、方法引用范例

范例:引用静态方法

在String类中有一个valueof(),这个方法就是进行静态调用的。

示例操作:根据文档“Java-platform SE 8—static String”的类型,打开simplework-Java EE,在TestDemo.java对话框输入,如下:

Package cn.mldn.demo;

@FunctionalInterface

Interface Iutil<P,R> {

public R zhuanhuan(P p);

}

public class TestDemo {

public static void main(String[] args) {

Iutil<Integer,String>iu=String::valueof;//进行方法引用

String str =iu.zhuanhuan(1000);//想当于:

String.valueof(1000)

(str.length());

点击执行即可

 

范例:引用某一个对象的方法

打开simplework-Java EE,在TestDemo.java对话框输入,操作如下:

Package cn.mldn.demo;

@FunctionalInterface

Interface Iutil<R> {

public R zhuanhuan()

}

public class TestDemo {

public static void main(String[] args) {

Iutil<Integer,String>iu=“hello”::toUpperCase;//进行方法引用

System.out.println(iu.zhuanhuan());//转换的就是这个“hello“

再点击执行

范例:引用类中的普通方法

String类中有一个compareTo(),进行比较大小;如下:

Package cn.mldn.demo;

@FunctionalInterface

Interface Iutil<R,P> {

public R 比较(P p1,P p2);

}

public class TestDemo {

public static void main(String[] args) {

Iutil<Integer,String>iu=String :: comparTo;//进行方法引用

System.out.println(iu.比较(“H”,”h”));

}

}

范例:引用构造方法

Package cn.mldn.demo;

Class Person {

Private String name ;

Private int age ;

Public person(String name,int age){

This.name = name ;

This.age = age ;

}

@Override

Public String toString() {

Return “person [name=”+name=”,age=”+age+”]”;

}

}

@FunctionalInterface

Interface Iutil<R,FP,SP> {

Public R create (FP p1,SP p2)

}

Public class TestDemo {

Public static void main(String[] args) {

Iutil<person,String,integer>iu= person::new;

System.out.println(iu.create(“张三“,20));

}

}

然后右击鼠标“Run As—1 Java Application”完成。

这些都属于Lamdba补充,不属于现阶段的开发