久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

JAVA 8 '::' 關鍵字詳解

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

Java 8 中我們可以通過 `::` 關鍵字來訪問類的構造方法,對象方法,靜態方法。

現有一個類 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的方法:

訪問靜態方法

// 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');

訪問構造方法

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

總結

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

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

標簽: Java
主站蜘蛛池模板: 刚察县| 黑山县| 翼城县| 望谟县| 嘉义市| 额尔古纳市| 宜昌市| 沙湾县| 普宁市| 东台市| 黔东| 乐陵市| 故城县| 黑水县| 通榆县| 拜城县| 通山县| 包头市| 廉江市| 肃南| 绍兴市| 宁阳县| 夏河县| 尚义县| 桓台县| 宁远县| 府谷县| 河东区| 灵石县| 平阴县| 松溪县| 微山县| 砀山县| 溧阳市| 林口县| 麦盖提县| 石门县| 阳信县| 乌拉特前旗| 北票市| 二手房|