方法引用 --- 与Lanbda表达式搭配使用

论坛 期权论坛 脚本     
匿名技术用户   2020-12-28 17:21   156   0

方法引用只是给现有方法起了个别名。

方法引用有四种形式:

1、 引用类中静态方法

类名称 :: 静态方法名称

package www.bit.java;

interface IUtil<P,R>{

//想把一个数据类型P转成R这个类型

R switchPara(P p);

}

public class Test {

public static void main(String[] args) {

IUtil<Integer,String> util = String::valueOf;

//相当于调用String.valueOf(10);

String str = util.switchPara(10);

System.out.println(str.startsWith("1"));

}

}

2、 引用某个对象的方法

实例化对象 :: 普通方法

package www.bit.java;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

interface IUtil<R>{

/**

* public String toUpperCase()

* @return

*/

R switchPara();

}

public class Test {

public static void main(String[] args) {

IUtil<String> util = "hello":: toUpperCase;

//相当于调用了"hello".toUpperCase();

System.out.println(util.switchPara());

}

}

3、 调用类中普通方法

类名称::普通方法

package www.bit.java;

interface IUtil<R,P>{

/**

* @param p1

* @param p2

* @return

*/

R compara(P p1,P p2);

}

public class Test {

public static void main(String[] args) {

IUtil<Integer,String> util = String::compareTo;

System.out.println(util.compara("刘","杨"));

}

}

4、 引用类中构造方法

类名称 ::new

package www.bit.java;

class Person{

private String name;

private Integer age;

public Person(String name, Integer age) {

this.name = name;

this.age = age;

}

@Override

public String toString() {

return "Person{" +

"name='" + name + '\'' +

", age=" + age +

'}';

}

}

interface IUtil<R,PN,PR>{

R createPer(PN p1,PR p2);

}

public class Test {

public static void main(String[] args) {

IUtil<Person,String,Integer>util =Person::new;

System.out.println(util.createPer("蛋哥",45));

}

}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP