亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kotlin與Java如何相互調用

發布時間:2021-12-13 09:09:54 來源:億速云 閱讀:323 作者:小新 欄目:開發技術

這篇文章主要介紹了Kotlin與Java如何相互調用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

一、Kotlin 調用 Java

1. kotlin 關鍵字轉義

java 中的方法或變量 是 kotlin 的關鍵字時,使用反引號 `` 對關鍵字進行轉義

// 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 的關鍵字時,使用反引號 `` 對關鍵字進行轉義
    val demo = JavaDemo()

    // 調用 java 的 is 屬性,is 是 kotlin 的關鍵字,使用反引號轉義
    demo.`is` = "call java field"
    println(demo.`is`) // call java field

    // 調用 java 的 in 方法,in 是 kotlin 的關鍵字,使用反引號轉義
    demo.`in`() // call java method in
}

2. kotlin 可將數組傳給 java 的可變數量參數

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

3. kotlin 獲取對象的 java 類

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

二、Java 調用 Kotlin

1. java 調用 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 調用 kotlin 的頂級屬性和頂級函數

// 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 調用生成指定類名的 kotlin 屬性和函數

// 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 調用 kotlin 的伴生對象的方法和靜態方法

// kotlin
class TestCallKotlin {

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

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

5. java 調用 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 調用 kotlin 含有 lambda 表達式參數的方法

// kotlin
object KotlinObject {

    // 參數為 lambda 表達式,入參為 Int,返回值為 Unit
    @JvmStatic
    fun method3(param: (Int) -> Unit = {}) {
        param.invoke(101)
    }

    // 參數為 lambda 表達式,入參為 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";
        }
    });
}

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Kotlin與Java如何相互調用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桂林市| 江城| 伽师县| 青田县| 常宁市| 桐梓县| 常州市| 石景山区| 沙坪坝区| 兴安县| 阿拉尔市| 双桥区| 巴彦县| 仁怀市| 藁城市| 余江县| 林周县| 桃园县| 滁州市| 泰安市| 内黄县| 荥阳市| 抚顺市| 伊春市| 都安| 桐梓县| 宜章县| 湖州市| 上杭县| 额尔古纳市| 吴江市| 巴塘县| 临海市| 达日县| 丹东市| 洞口县| 五峰| 昌乐县| 瓦房店市| 柳江县| 中西区|