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

Kotlin與Java相互調(diào)用的完整實(shí)例

 更新時(shí)間:2021年12月12日 11:02:56   作者:Lucky_William  
Kotlin的設(shè)計(jì)過程中就考慮到了與Java的互操作性,在Kotlin中可以直接調(diào)用既有的Java代碼,反過來在Java中也可以很流暢地使用Kotlin代碼,這篇文章主要給大家介紹了關(guān)于Kotlin與Java相互調(diào)用的相關(guān)資料,需要的朋友可以參考下

一、Kotlin 調(diào)用 Java

1. kotlin 關(guān)鍵字轉(zhuǎn)義

java 中的方法或變量 是 kotlin 的關(guān)鍵字時(shí),使用反引號(hào) `` 對(duì)關(guān)鍵字進(jìn)行轉(zhuǎn)義

// java
public class JavaDemo {

    String is;

    public String getIs() {
        return is;
    }

    public void setIs(String is) {
        this.is = is;
    }

    public void in() {
        System.out.println("call java method in");
    }
    
	public void multiParams(int... params) {
        System.out.println(Arrays.toString(params));
    }
}
// kotlin
fun main() {
    // 1. java 中的方法或變量 是kotlin 的關(guān)鍵字時(shí),使用反引號(hào) `` 對(duì)關(guān)鍵字進(jìn)行轉(zhuǎn)義
    val demo = JavaDemo()

    // 調(diào)用 java 的 is 屬性,is 是 kotlin 的關(guān)鍵字,使用反引號(hào)轉(zhuǎn)義
    demo.`is` = "call java field"
    println(demo.`is`) // call java field

    // 調(diào)用 java 的 in 方法,in 是 kotlin 的關(guān)鍵字,使用反引號(hào)轉(zhuǎn)義
    demo.`in`() // call java method in
}

2. kotlin 可將數(shù)組傳給 java 的可變數(shù)量參數(shù)

// kotlin
// 使用 * 號(hào)將 kotlin 的 數(shù)組 傳給 java 的 可變數(shù)量參數(shù)
fun main() {
	val arrayInt = intArrayOf(1, 2, 3)
	demo.multiParams(*arrayInt) // [1, 2, 3]
}

3. kotlin 獲取對(duì)象的 java 類

// kotlin
fun main() {
 	demo::class.java
    demo.javaClass
}

二、Java 調(diào)用 Kotlin

1. java 調(diào)用 kotlin 類的屬性和方法

// kotlin
class KotlinDemo {
    var field: String = "kotlin field"

    fun method() {
        println("call kotlin method")
    }
}

// java
public static void main(String[] args) {
	KotlinDemo demo = new KotlinDemo();
    System.out.println(demo.getField()); // kotlin field
    demo.method(); // call kotlin method
}

2. java 調(diào)用 kotlin 的頂級(jí)屬性和頂級(jí)函數(shù)

// kotlin
val topLevelField: Int
    get() {
        println("call kotlin top level field")
        return 1
    }

fun topLevelFunc() {
    println("call kotlin top level function")
}
// java
public static void main(String[] args) {
	TestCallEachOtherKt.getTopLevelField(); // call kotlin top level field
    TestCallEachOtherKt.topLevelFunc(); // call kotlin top level function
}
        

3. java 調(diào)用生成指定類名的 kotlin 屬性和函數(shù)

// kotlin
// 指定文件生成的 Java 類或方法的名稱。
@file:JvmName("CallKtDemo")

package com.william.testkt

var field: Int = 100

fun method() {
    println("call CallKtDemo method")
}

// java
public static void main(String[] args) {
	System.out.println(CallKtDemo.getField());
    CallKtDemo.method();
}

4. java 調(diào)用 kotlin 的伴生對(duì)象的方法和靜態(tài)方法

// kotlin
class TestCallKotlin {

    companion object {
    	// 模擬靜態(tài)方法
        fun method1() {
            println("call method1")
        }

		// 靜態(tài)方法
        @JvmStatic 
        fun method2() {
            println("call method2")
        }
    }
}
// java
public static void main(String[] args) {
	TestCallKotlin.Companion.method1();
	TestCallKotlin.method2();
}

5. java 調(diào)用 kotlin 單例類的方法

// kotlin
object KotlinObject {

    fun method1() {
        println("call method1")
    }

    @JvmStatic
    fun method2() {
        println("call method2")
    }
}

// java
public static void main(String[] args) {
	KotlinObject.INSTANCE.method1();
    KotlinObject.method2();
}

6. java 調(diào)用 kotlin 含有 lambda 表達(dá)式參數(shù)的方法

// kotlin
object KotlinObject {

    // 參數(shù)為 lambda 表達(dá)式,入?yún)?Int,返回值為 Unit
    @JvmStatic
    fun method3(param: (Int) -> Unit = {}) {
        param.invoke(101)
    }

    // 參數(shù)為 lambda 表達(dá)式,入?yún)?Boolean,返回值為 String
    @JvmStatic
    fun method4(param: (Boolean) -> String = { "" }) {
        param.invoke(true)
    }
}

// java
public static void main(String[] args) {

	KotlinObject.method3(new Function1<Integer, Unit>() {
     	@Override
        public Unit invoke(Integer integer) {
            System.out.println(integer);
            return null;
        }
    });

    KotlinObject.method4(new Function1<Boolean, String>() {
        @Override
        public String invoke(Boolean param) {
            System.out.println("invoke param: " + param);
            return param ? "success" : "failed";
        }
    });
}

附 Github 源碼:

JavaDemo.java

TestCallKotlin.kt

TestCallEachOther.kt

總結(jié)

到此這篇關(guān)于Kotlin與Java相互調(diào)用的文章就介紹到這了,更多相關(guān)Kotlin與Java相互調(diào)用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • android自定義控件實(shí)現(xiàn)簡易時(shí)間軸(2)

    android自定義控件實(shí)現(xiàn)簡易時(shí)間軸(2)

    這篇文章主要為大家詳細(xì)介紹了android自定義控件實(shí)現(xiàn)簡易時(shí)間軸的第二篇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Android Studio 3.6 layout文件text模式切換問題

    Android Studio 3.6 layout文件text模式切換問題

    這篇文章主要介紹了Android Studio 3.6 layout文件text模式切換問,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • AndroidQ分區(qū)存儲(chǔ)權(quán)限變更及適配的實(shí)現(xiàn)

    AndroidQ分區(qū)存儲(chǔ)權(quán)限變更及適配的實(shí)現(xiàn)

    這篇文章主要介紹了AndroidQ分區(qū)存儲(chǔ)權(quán)限變更及適配的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Android實(shí)現(xiàn)傳感器功能

    Android實(shí)現(xiàn)傳感器功能

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)傳感器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Android實(shí)現(xiàn)背景可滑動(dòng)登錄界面 (不壓縮背景彈出鍵盤)

    Android實(shí)現(xiàn)背景可滑動(dòng)登錄界面 (不壓縮背景彈出鍵盤)

    這篇文章主要介紹了Android實(shí)現(xiàn)背景可滑動(dòng)登錄界面 (不壓縮背景彈出鍵盤),需要的朋友可以參考下
    2017-04-04
  • 詳解Android項(xiàng)目多服務(wù)端接口適配(超簡單)

    詳解Android項(xiàng)目多服務(wù)端接口適配(超簡單)

    這篇文章主要介紹了Android項(xiàng)目多服務(wù)端接口適配(超簡單),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • JetpackCompose Navigation導(dǎo)航實(shí)現(xiàn)流程

    JetpackCompose Navigation導(dǎo)航實(shí)現(xiàn)流程

    Navigation是Jetpack用于Android導(dǎo)航的組件,作用是處理頁面跳轉(zhuǎn),以及頁面跳轉(zhuǎn)過程中的交互。使用Navigation,你就需要為每個(gè)頁面設(shè)定一條唯一路徑,它是一個(gè)String常量,形式是DeepLink的樣子,從一個(gè)頁面跳轉(zhuǎn)到另一個(gè)頁面,它通過輸入目的地的路徑進(jìn)行轉(zhuǎn)跳
    2023-01-01
  • 移動(dòng)端使用CSS或JS判斷橫屏和豎屏的講解

    移動(dòng)端使用CSS或JS判斷橫屏和豎屏的講解

    今天小編就為大家分享一篇關(guān)于移動(dòng)端使用CSS或JS判斷橫屏和豎屏的講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Android 解析XML 文件的四種方法總結(jié)

    Android 解析XML 文件的四種方法總結(jié)

    本文將詳細(xì)介紹用解析XML的四種方法,XML現(xiàn)在已經(jīng)成為一種通用的數(shù)據(jù)交換格式,平臺(tái)的無關(guān)性使得很多場(chǎng)合都需要用到XML,這里對(duì)幾種解析XML 的方法做詳解
    2016-07-07
  • Android編程仿Iphone拖動(dòng)相片特效Gallery的簡單應(yīng)用示例

    Android編程仿Iphone拖動(dòng)相片特效Gallery的簡單應(yīng)用示例

    這篇文章主要介紹了Android編程仿Iphone拖動(dòng)相片特效Gallery的簡單應(yīng)用,結(jié)合實(shí)例形式分析了Android圖形拖動(dòng)特效的實(shí)現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2016-10-10

最新評(píng)論

同德县| 大渡口区| 始兴县| 南部县| 盘锦市| 射洪县| 富阳市| 定远县| 台湾省| 大田县| 缙云县| 灵宝市| 西贡区| 白山市| 兴安盟| 尚义县| 泾阳县| 黑龙江省| 泗洪县| 闽侯县| 正阳县| 申扎县| 葵青区| 红原县| 焦作市| 岳西县| 西乌珠穆沁旗| 拉孜县| 江北区| 金平| 黄陵县| 曲水县| 龙岩市| 阿巴嘎旗| 龙胜| 信宜市| 珠海市| 商河县| 武乡县| 乐安县| 松滋市|