簡體   English   中英

沒有通配符的 Kotlin 泛型到 Java

[英]Kotlin generics to java without wildcards

Kotlin 類示例:

class Example {
    private lateinit var creator: (Unit) -> String
}

在java中等效將是

class Example {
    Function1<? super Unit, ? super String> creator
}

如何注釋字段創建者以避免使用通配符?

您可以使用@JvmSuppressWildcards刪除通配符:

lateinit var creator: (@JvmSuppressWildcards Unit) -> @JvmSuppressWildcards String

順便說一下,您的代碼不會生成通配符,因此以下代碼在沒有任何注釋的情況下是完全有效的:

new Example().setCreator(new Function1<Unit, String>() {
     @Override
     public String invoke(Unit unit) {
         return "Test";
     }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM