JDK8 引用(方法引用 構造器引用 陣列引用)

2021-09-05 19:33:28 字數 2049 閱讀 1518

* @description:

* 一、方法引用

* 如果lambda 體中的內容有方法已經實現了,我們可以使用「方法引用」

* (可以理解為方法引用是 lambda表示式的另外一種表現形式)

* 主要有三種語法格式:

* 物件 ::例項方法名

* 類:: 靜態方法名

* 類::例項方法名

* 注 : lambda 體中呼叫方法的引數列表和返回型別,要與函式式介面中抽象方法的函式列表和返回值型別保持一致!

* 如果lambda 引數列表中的第一引數是例項方法的呼叫者,而第二個引數是例項方法的引數時,可以使用classname::method

* 二、構造器引用

* classname::new

* 注:需要呼叫的構造器的引數列表要與函式式介面中抽象方法的引數列表引數保持一致

* 三、陣列引用

* @author:zhangys

* @date:created in 19:46 2018/12/30

* @modified by:

public class demo2 {

* 物件 ::例項方法名

@test

public void test1(){

consumercon = (x) -> system.out.println(x);

printstream ps = system.out;

consumercon1 = ps :: println;

con1.accept("ssss");

printstream ps1 = system.out;

consumercon2 = (x) -> ps1.println(x);

@test

public void test2(){

employee emp = new employee();

suppliersup = () -> emp.getname();

string str = sup.get();

system.out.println(str);

suppliersup2 = emp::getage;

integer num = sup2.get();

system.out.println(num);

* 類:: 靜態方法名

@test

public void test3(){

comparatorcom = (x,y) -> integer.compare(x,y);

comparatorcom1 = integer::compareto;

* 類名::例項方法名

@test

public void test4(){

bipredicatebp = (x,y) -> x.equals(y);

bipredicatebp2 = string::equals;

* 構造器引用

@test

public void test5(){

suppliersup = () -> new employee();

sup.get();

//構造器引用方式

suppliersup2 = employee::new;

employee e = sup2.get();

system.out.println(e);

@test

public void test6(){

functionfun = (x) -> new employee(x);

system.out.println(e);

bifunctionbf = employee::new;

* 陣列引用

@test

public void test7(){

functionfun = (x) -> new string[x];

system.out.println(strs.length);

functionfun2 = string::new;

system.out.println(strs2.length);

jdk8 之方法引用

方法引用 實際上是lamda函式的語法糖 有時候並不適用 我們可以講方法引用看做乙個函式指標.function pointer 方法引用分為4類 類名 靜態方法名 建立乙個類 public class student public void setname string name public in...

jdk8 方法引用

方法引用的形式 方法引用的標準形式是 類名 方法名。注意 只需要寫方法名,不需要寫括號 有以下四種形式的方法引用 型別 示例 引用靜態方法 containingclass staticmethodname 引用某個物件的例項方法 containingobject instancemethodname...

JDK8新特性 方法構造方法的引用

一 建立實體類物件 public class person public person string firstname,string lastname override public string tostring public string getfirstname public void se...