国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

JAVA 8 '::' 關(guān)鍵字詳解

瀏覽:4日期:2022-08-24 11:09:18

Java 8 中我們可以通過 `::` 關(guān)鍵字來訪問類的構(gòu)造方法,對象方法,靜態(tài)方法。

現(xiàn)有一個類 Something

class Something { // constructor methods Something() {} Something(String something) {System.out.println(something); } // static methods static String startsWith(String s) { return String.valueOf(s.charAt(0)); } // object methods String endWith(String s) { return String.valueOf(s.charAt(s.length()-1)); } void endWith() {}}

如何用 ’::’ 來訪問類Something中的方法呢?先定義一個接口,因為必須要用 functional interface 來接收,否則編譯錯誤(The target type of this expression must be a functional interface)

@FunctionalInterfaceinterface IConvert<F, T> { T convert(F form);}

(@FunctionalInterface 注解要求接口有且只有一個抽象方法,JDK中有許多類用到該注解,比如 Runnable,它只有一個 Run 方法。)

觀察接口 IConvert,傳參為類型 F,返回類型 T。所以,我們可以這樣訪問類Something的方法:

訪問靜態(tài)方法

// static methodsIConvert<String, String> convert = Something::startsWith;String converted = convert.convert('123')

訪問對象方法

// object methodsSomething something = new Something();IConvert<String, String> converter = something::endWith;String converted = converter.convert('Java');

訪問構(gòu)造方法

// constructor methodsIConvert<String, Something> convert = Something::new;Something something = convert.convert('constructors');

總結(jié)

我們可以把類Something中的方法static String startsWith(String s){...}、String endWith(String s){...}、Something(String something){...}看作是接口IConvert的實現(xiàn),因為它們都符合接口定義的那個“模版”,有傳參類型F以及返回值類型T。比如構(gòu)造方法Something(String something),它傳參為String類型,返回值類型為Something。注解@FunctionalInterface保證了接口有且僅有一個抽象方法,所以JDK能準(zhǔn)確地匹配到相應(yīng)方法。

到此這篇關(guān)于JAVA 8 ’::’ 關(guān)鍵字的文章就介紹到這了,更多相關(guān)JAVA 8 ’::’ 關(guān)鍵字內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
主站蜘蛛池模板: 五台县| 二手房| 神木县| 金昌市| 淳安县| 临海市| 阿拉善左旗| 阳原县| 娄底市| 乐业县| 牡丹江市| 清原| 上饶县| 乳源| 河间市| 东丰县| 武邑县| 静乐县| 中牟县| 凤台县| 石阡县| 东平县| 瑞丽市| 南城县| 河源市| 金秀| 会泽县| 绥化市| 贵德县| 宾川县| 姚安县| 曲水县| 南充市| 丁青县| 新郑市| 台南市| 綦江县| 常熟市| 清镇市| 普兰店市| 常德市|