欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Kotlin 接口與 Java8 新特性接口詳解

 更新時間:2019年06月14日 08:44:02   作者:駐坑大使  
這篇文章主要介紹了Kotlin 接口與 Java8 新特性接口,Kotlin的接口是可以包含屬性聲明。Kotlin默認(rèn)的聲明是fianl 和public的。 Kotlin里嵌套的類默認(rèn)并不是內(nèi)部內(nèi),不包含對器外部類的隱式調(diào)用。下面我們來一起學(xué)習(xí)一下吧

前言

在看一本關(guān)于高性能編程的時候發(fā)現(xiàn) Java8 中關(guān)于接口的新特性的介紹,這個特性是真的棒,解決了一個接口中有多個方法,但并不想實(shí)現(xiàn)該接口的類都去實(shí)現(xiàn)所有的方法,簡單的說就是在類需要的情況再去重寫接口。所以有了以下的特性出現(xiàn)。

接口增強(qiáng)

在 Java8 的中接口特性中增加以下倆種特性:

  • 在接口中可以使用 default 關(guān)鍵字修飾默認(rèn)方法或擴(kuò)展方法,抽象方法因?yàn)槠涮匦缘脑驘o法使用
  • 接口可以使用 static 聲明為靜態(tài)方法,可以通過類直接調(diào)用Android Studio 中使用 Java8 需要在模塊中的 build.gradle 中配置指定的版 Java 版本,當(dāng)然使用 Kotlin 為開發(fā)語言的話需要為 Kotlin 指定 Jvm 版本,因?yàn)?Kotlin 使用的是 Jvm 1.6

那么下面就來展示他們的配置方法:

android {
defaultConfig {
... 
kotlinOptions {
jvmTarget = '1.8'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}

經(jīng)過以上的配置就可以使用 Java8 的新特性了代碼示例:

puclic interface onTest{
void onTestStandardMenthod();
default void onTestDefaultMethond(){
// 默認(rèn)的邏輯
}
static void onTestStaticMenthod(){
// 默認(rèn)的邏輯
}
}
public class TestActivity extends AppCompatActivity implements onTest{
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 通過類名調(diào)用的接口
onTest.onTestStaticMenthod();
// 通過對象的形式調(diào)用 代碼只用來舉例說明
new TestActivity.onTestStandardMenthod() 
new TestActivity.onTestDefaultMethond()
}
@Override
public void onTestStandardMenthod(){} // 必須實(shí)現(xiàn)
@Override
public void onTestDefaultMethond(){} // 可以選擇性實(shí)現(xiàn)
}

上面的代碼是展示如何使用,如果對具體的細(xì)節(jié)想了解的更清楚可以查看官方的文檔

可能有朋友好奇我為什么先講 Java,因?yàn)?Kotlin 的語法結(jié)構(gòu)和關(guān)鍵字是不一樣的雖然實(shí)現(xiàn)的思路是一樣的,所以先從 Java 開始,另外是近年 Jvm 版本升級很快,基礎(chǔ)概念不會改變,但有新的特性是正常的,如果有??次臋n的朋友會發(fā)現(xiàn)有些方法實(shí)現(xiàn)的方式和細(xì)節(jié)也會發(fā)生改變。

接下來開始 Kotlin 的部分,這部分看起來與 Java 8 相似,但實(shí)際上并沒有使用 Java 8 的特性,但為了好理解一些可以寫成類似的思路。

internal interface onTest {
fun onTestStandardMenthod()
fun onTestDefaultMethond() {
// 默認(rèn)的邏輯
}
companion object { 
fun onTestStaticMenthod() {
// 默認(rèn)的邏輯 
}
}
}
class TestActivity : AppCompatActivity , onTest{
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 通過類名調(diào)用的接口
onTest.onTestStaticMenthod()
// 通過對象的形式調(diào)用 代碼只用來舉例說明
TestActivity.onTestStandardMenthod() 
TestActivity.onTestDefaultMethond()
}
// 必須實(shí)現(xiàn)
override fun onTestStandardMenthod(){} 
// 可以選擇性實(shí)現(xiàn)
override fun onTestDefaultMethond(){ super.onTestDefaultMethond()}
}

Kotlin 的接口與 Java 8 類似,既包含抽象方法的聲明,也包含實(shí)現(xiàn)。與抽象類不同的是,接口無法保存狀態(tài)。它可以有屬性但必須聲明為抽象或提供訪問器實(shí)現(xiàn),如果對 Kotlin 的接口不明白的的話可以點(diǎn)這里查看更詳細(xì)的說明。

Kotlin 的接口可以選擇是否有方法體,對比之下的話 Java8 需要聲明 default 后可以有方法體,靜態(tài)接口的方法其實(shí)在實(shí)現(xiàn)概念上是一樣的,或許說目前的面向?qū)ο笕f變不離其中吧,根據(jù)語言的靈活性結(jié)合優(yōu)秀的思維可以寫出更漂亮的代碼。

對于 Java8 這讓我想到了之前朋友的吐槽 “蘋果總是做一些以前就有的功能,然后開發(fā)布會來夸大其詞,很厲害的樣子” 我覺得 Java 就是這樣子的,一些本應(yīng)該隨著時代來不斷完善的語法或者新的優(yōu)化,早應(yīng)該就出了,結(jié)果非得在外界的沖擊下,才做出改變??锤碌乃俣?,很明顯這并不是非常困難的事,這也就誕生了新的語言,世間常態(tài)總是如此當(dāng)現(xiàn)有的工具詬病太多后,就會誕生新的工具,當(dāng)然 Java 是必不可少的一環(huán)。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring實(shí)現(xiàn)動態(tài)切換多數(shù)據(jù)源的解決方案

    Spring實(shí)現(xiàn)動態(tài)切換多數(shù)據(jù)源的解決方案

    這篇文章主要給大家介紹了Spring實(shí)現(xiàn)動態(tài)切換多數(shù)據(jù)源的解決方案,文中給出了詳細(xì)的介紹和示例代碼,相信對大家的理解和學(xué)習(xí)具有一定的參考借鑒價值,有需要的朋友可以參考學(xué)習(xí),下面來一起看看吧。
    2017-01-01
  • Java NIO實(shí)現(xiàn)群聊系統(tǒng)

    Java NIO實(shí)現(xiàn)群聊系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java NIO實(shí)現(xiàn)群聊系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 基于SpringBoot中activeMq的JmsTemplate的實(shí)例

    基于SpringBoot中activeMq的JmsTemplate的實(shí)例

    這篇文章主要介紹了基于SpringBoot中activeMq的JmsTemplate的實(shí)例問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Spring如何基于注解配置使用ehcache

    Spring如何基于注解配置使用ehcache

    這篇文章主要介紹了Spring如何基于注解配置使用ehcache,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • 詳解Java接口的相關(guān)知識

    詳解Java接口的相關(guān)知識

    今天給大家?guī)淼氖顷P(guān)于Java基礎(chǔ)的相關(guān)知識,文章圍繞著Java接口展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 關(guān)于在Java中使用預(yù)定義類

    關(guān)于在Java中使用預(yù)定義類

    這篇文章主要介紹了關(guān)于在Java中使用預(yù)定義類,預(yù)定義類就是Java類庫(或第三方庫)中已經(jīng)定義好的類,例如,Math 類和 Date 類,需要的朋友可以參考下
    2023-05-05
  • java.net.http.HttpClient使用示例解析

    java.net.http.HttpClient使用示例解析

    這篇文章主要為大家介紹了java.net.http.HttpClient使用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • java結(jié)束進(jìn)程的實(shí)例代碼

    java結(jié)束進(jìn)程的實(shí)例代碼

    java結(jié)束程序進(jìn)程的方法很簡單,只要一句代碼就行,大家參考使用吧
    2013-12-12
  • 淺談Java中Map和Set之間的關(guān)系(及Map.Entry)

    淺談Java中Map和Set之間的關(guān)系(及Map.Entry)

    這篇文章主要介紹了淺談Java中Map和Set之間的關(guān)系(及Map.Entry),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • IntelliJ IDEA 2020 安裝和常用配置(推薦)

    IntelliJ IDEA 2020 安裝和常用配置(推薦)

    這篇文章主要介紹了IntelliJ IDEA 2020 安裝和常用配置(推薦),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08

最新評論