最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

接口增強(qiáng)

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

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

那么下面就來(lái)展示他們的配置方法:

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

經(jīng)過(guò)以上的配置就可以使用 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);
// 通過(guò)類(lèi)名調(diào)用的接口
onTest.onTestStaticMenthod();
// 通過(guò)對(duì)象的形式調(diào)用 代碼只用來(lái)舉例說(shuō)明
new TestActivity.onTestStandardMenthod() 
new TestActivity.onTestDefaultMethond()
}
@Override
public void onTestStandardMenthod(){} // 必須實(shí)現(xiàn)
@Override
public void onTestDefaultMethond(){} // 可以選擇性實(shí)現(xiàn)
}

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

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

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

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)
// 通過(guò)類(lèi)名調(diào)用的接口
onTest.onTestStaticMenthod()
// 通過(guò)對(duì)象的形式調(diào)用 代碼只用來(lái)舉例說(shuō)明
TestActivity.onTestStandardMenthod() 
TestActivity.onTestDefaultMethond()
}
// 必須實(shí)現(xiàn)
override fun onTestStandardMenthod(){} 
// 可以選擇性實(shí)現(xiàn)
override fun onTestDefaultMethond(){ super.onTestDefaultMethond()}
}

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

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

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

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

相關(guān)文章

  • java:提示程序包org.junit不存在時(shí)的解決方案

    java:提示程序包org.junit不存在時(shí)的解決方案

    這篇文章主要介紹了java:提示程序包org.junit不存在時(shí)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • (starters)springboot-starter整合阿里云datahub方式

    (starters)springboot-starter整合阿里云datahub方式

    這篇文章主要介紹了(starters)springboot-starter整合阿里云datahub方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Java基于HttpClient實(shí)現(xiàn)RPC的示例

    Java基于HttpClient實(shí)現(xiàn)RPC的示例

    HttpClient可以實(shí)現(xiàn)使用Java代碼完成標(biāo)準(zhǔn)HTTP請(qǐng)求及響應(yīng)。本文主要介紹了Java基于HttpClient實(shí)現(xiàn)RPC,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 解決spring?data?jpa?saveAll()?保存過(guò)慢問(wèn)題

    解決spring?data?jpa?saveAll()?保存過(guò)慢問(wèn)題

    這篇文章主要介紹了解決spring?data?jpa?saveAll()保存過(guò)慢問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java中你真的會(huì)用Constructor構(gòu)造器嗎之看完本篇你就真的會(huì)了

    Java中你真的會(huì)用Constructor構(gòu)造器嗎之看完本篇你就真的會(huì)了

    顯式初始化要求我們?cè)趯?xiě)程序時(shí)就確定初始值,這有時(shí)很不方便。我們可以使用構(gòu)造器(constructor)來(lái)初始化對(duì)象。構(gòu)造器可以初始化數(shù)據(jù)成員,還可以規(guī)定特定的操作。這些操作會(huì)在創(chuàng)建對(duì)象時(shí)自動(dòng)執(zhí)行。下面文字將對(duì)該內(nèi)容做詳細(xì)介紹,需要的小伙伴請(qǐng)參考
    2021-09-09
  • Java8語(yǔ)法糖之Lambda表達(dá)式的深入講解

    Java8語(yǔ)法糖之Lambda表達(dá)式的深入講解

    這篇文章主要給大家介紹了關(guān)于Java8語(yǔ)法糖之Lambda表達(dá)式的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • SpringBoot集成百度AI實(shí)現(xiàn)人臉識(shí)別的項(xiàng)目實(shí)踐

    SpringBoot集成百度AI實(shí)現(xiàn)人臉識(shí)別的項(xiàng)目實(shí)踐

    本文主要介紹了SpringBoot集成百度AI實(shí)現(xiàn)人臉識(shí)別的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 一篇文章總結(jié)Java虛擬機(jī)內(nèi)存區(qū)域模型

    一篇文章總結(jié)Java虛擬機(jī)內(nèi)存區(qū)域模型

    這篇文章主要介紹了一篇文章總結(jié)Java虛擬機(jī)內(nèi)存區(qū)域模型,本篇文章主要來(lái)總結(jié)一下Java虛擬機(jī)內(nèi)存的各個(gè)區(qū)域,以及這些區(qū)域的作用、服務(wù)對(duì)象以及其中可能產(chǎn)生的問(wèn)題,作為大家的面試寶典。,需要的朋友可以參考下
    2019-06-06
  • java實(shí)現(xiàn)Object轉(zhuǎn)String的4種方法小結(jié)

    java實(shí)現(xiàn)Object轉(zhuǎn)String的4種方法小結(jié)

    這篇文章主要介紹了java實(shí)現(xiàn)Object轉(zhuǎn)String的4種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • idea中項(xiàng)目文件目錄消失如何解決

    idea中項(xiàng)目文件目錄消失如何解決

    這篇文章主要介紹了idea中項(xiàng)目文件目錄消失的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評(píng)論

乌拉特前旗| 集贤县| 晋城| 正蓝旗| 介休市| 九龙县| 金堂县| 大庆市| 祥云县| 滦南县| 淮安市| 来凤县| 庆城县| 井陉县| 若羌县| 探索| 南投市| 固镇县| 博兴县| 云南省| 广饶县| 固始县| 白山市| 玛沁县| 寻甸| 天长市| 灵寿县| 吉首市| 广灵县| 高阳县| 团风县| 平乡县| 莱西市| 资中县| 大名县| 分宜县| 施秉县| 临漳县| 丰镇市| 新野县| 玉田县|