亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

Kotlin中Suppress的非常規用法示例

2024-07-21 23:03:51
字體:
來源:轉載
供稿:網友

前言

在 Java 中,有個叫 SuppressWarnings 的注解,用于忽略特定的編譯器警告。Kotlin 中也有一個類似功能的注解,叫做 Suppress,本文主要講講這個注解有什么用。

常規用法

有時候會寫出這樣的一些代碼。這些在Kotlin編譯器的眼里可能出現問題的代碼,實際上卻非常正確,跑起來不會出任何問題。

然后你就得到了一個編譯器警告(warning),甚至是編譯錯誤(error)。

比較常見的,比如說 unchecked cast:

val some: List<*> = emptyList<Nothing>()some as List<String> // Unchecked cast: List<*> to List<String>

然后就可以使用 Suppress 取消這個 warning:

val some: List<*> = emptyList<Nothing>()@Suppress("UNCHECKED_CAST")some as List<String>

再舉個例子:

sealed class Base { @Suppress("LeakingThis") val code = calculate() abstract fun calculate(): Int class Derived : Base() {  override fun calculate() = 42 }}

上面這代碼并不會出現 warning 的具體說明里的問題,所以使用了 Suppress 解決這個 warning。

這是很簡單的破事水,沒有任何討論的價值。

然后下面是正文。

好孩子不要模仿!很危險的!

非常規用法

這破注釋竟然能消除 error!

比如說這樣的代碼:

println((null as String?).length)

編譯器會告訴你這樣是不對的,然后向你丟出了一個 error:

Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String?

然后就可以使用 Suppress 讓編譯器閉嘴!

@Suppress("UNSAFE_CALL")println((null as String?).length)

然后就可以順利的通過編譯,編譯后跑一跑,就可以輕松地拿到一個空指針異常:

Exception in thread "main" java.lang.NullPointerException
    at .......

很簡單,有了 Suppress,你就可以讓這些可以本來通過編譯器生成java字節碼,但是因為各種各樣的原因(例如類型安全)被ban掉的代碼,順利通過編譯。

下面給幾個可能有用的例子。

例1

fun some(any: Any) { when(any) {  is Array<String> -> println(any.size) }}

這是我吐槽過的「Java能做但是Kotlin做不了的事」系列之一。不考慮Kotlin的其他target(如js),在Jvm平臺上有如下的迂回:

any is Array<*> && any.isArrayOf<String>()

就是很丑罷了。

在Kotlin的早期代碼,這樣的type check是允許的,因為某些原因ban掉了(讀者可以想想為什么要ban掉這樣的代碼)。這個時候可以用 Suppress 把這個后門打開。

@Suppress("CANNOT_CHECK_FOR_ERASED")

例2

類型別名。

class Some { @Suppress("TOPLEVEL_TYPEALIASES_ONLY") typealias Str = String val a: Str = ""}

一目了然,不解釋。

例3

Kotlin 在遠古版本 M13 新增了 lateinit 修飾符,可以對只讀屬性和可變屬性使用。

然后 M14 版本就殘忍地 ban 掉了 lateinit val。

@Suppress("INAPPLICABLE_LATEINIT_MODIFIER")lateinit val lateInitVal: String

lateinit val 的用處可以看上面 M13 的鏈接里面的說明。

例4

Kotlin Collection Literals 半成品。

@Suppress("UNSUPPORTED")val bs: BooleanArray = [true, false, true]

這是個未完成的功能,目前只支持數組。以后可以支持 List、Map 和 Set,所以為了避免不必要的兼容性麻煩,在正常情況下只允許在注解里這樣用。要想在其他地方用,就像上面代碼那樣。

結尾

想知道更多的Suppress選項的話,可以去翻Kotlin的源碼。

這種無法得到官方支持的奇技淫巧,也許下次更新就掛掉了,所以如果用了那就后果自負吧。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到kotlin教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩中文字幕不卡视频| 97在线观看免费高清| www.xxxx欧美| 久久视频中文字幕| 亚洲专区中文字幕| 欧美精品18videos性欧美| 红桃av永久久久| 91麻豆国产精品| 欧美午夜电影在线| 国产精品第七十二页| 亚洲男人天堂手机在线| 亚洲天堂av综合网| 91精品视频免费看| 亚洲人a成www在线影院| 亚洲a∨日韩av高清在线观看| 91香蕉嫩草影院入口| 国产精品1区2区在线观看| 亚洲美女激情视频| 成人久久18免费网站图片| 久久久av亚洲男天堂| 日韩精品在线免费观看视频| 欧日韩在线观看| 国产综合在线观看视频| 欧美电影免费观看电视剧大全| 日韩一区二区福利| 欧美激情一区二区久久久| 国产成人精品999| 热久久99这里有精品| 92看片淫黄大片欧美看国产片| 亚洲xxxx做受欧美| 久久久亚洲网站| 国产精品久久久久91| 国产亚洲精品久久久| 久久久精品在线观看| 色偷偷偷综合中文字幕;dd| 美日韩在线视频| 欧美一级淫片videoshd| 国产精品旅馆在线| 日韩av片免费在线观看| 欧美性生交xxxxxdddd| 亚洲精品日韩久久久| 色噜噜狠狠狠综合曰曰曰| 国产精品国产亚洲伊人久久| 色婷婷综合成人| 欧美精品18videosex性欧美| 国产精品黄视频| 亚洲综合精品一区二区| 久久午夜a级毛片| 亚洲精品中文字幕女同| 久久在线免费视频| 一区二区三区视频免费| 久久久亚洲精选| 亚洲午夜性刺激影院| 亚洲国产成人91精品| 成人日韩在线电影| 亚洲石原莉奈一区二区在线观看| 国产免费亚洲高清| 欧美日韩国产第一页| 欧美多人乱p欧美4p久久| 国产成人一区二区在线| 日韩第一页在线| 亚洲成人久久网| 欧美日韩免费看| 久久久国产在线视频| 亚洲第一中文字幕在线观看| 97人人模人人爽人人喊中文字| 久久精品国产亚洲7777| 欧美亚州一区二区三区| 色悠悠国产精品| 国产成人avxxxxx在线看| 国产精品久久久久久一区二区| 亚洲一区二区三区在线视频| 奇米成人av国产一区二区三区| 亚洲天堂av女优| 久久久在线视频| 国产成人精品a视频一区www| 久久精品视频在线| 日本精品免费一区二区三区| 国产欧美一区二区三区久久| 欧美成人激情视频免费观看| 久久九九全国免费精品观看| 国内精品久久久久久久久| 国产精品福利无圣光在线一区| 国产一区二区日韩精品欧美精品| 一本色道久久88综合亚洲精品ⅰ| 日本三级韩国三级久久| 欧美电影免费观看| 欧美日韩一区二区精品| 美女扒开尿口让男人操亚洲视频网站| 亚洲第一精品夜夜躁人人躁| 热re91久久精品国99热蜜臀| 成人黄色影片在线| 国产精品爽黄69| 亚洲精品自拍第一页| 国产精品美女www| 国产精品igao视频| 欧美精品www| 久久精品久久久久电影| 国产精品自拍偷拍视频| 91av视频导航| 欧美网站在线观看| 久久国内精品一国内精品| 亚洲精品在线观看www| 揄拍成人国产精品视频| 一区二区三区无码高清视频| 91av中文字幕| 亚洲男人7777| 欧美国产日韩精品| 欧美日韩一区二区三区在线免费观看| 国产精品嫩草影院一区二区| 久久躁日日躁aaaaxxxx| 国产专区精品视频| 亚洲精品美女视频| 日韩美女视频免费在线观看| 91精品国产乱码久久久久久蜜臀| 久久这里有精品| 免费99精品国产自在在线| 国产亚洲精品美女久久久| 亚洲韩国青草视频| 国产成人精品在线播放| 亚洲第一色在线| 久久久久久久999精品视频| 欧美性猛交99久久久久99按摩| 国产主播精品在线| 91九色在线视频| 欧美亚洲激情在线| 欧美肥臀大乳一区二区免费视频| 久久亚洲精品一区二区| 成人妇女免费播放久久久| 亚洲a级在线观看| 日本伊人精品一区二区三区介绍| 欧美激情网友自拍| 91精品国产综合久久久久久久久| 在线精品国产欧美| 亚洲午夜久久久影院| 精品久久久免费| 国产欧美精品xxxx另类| 欧美伦理91i| 国产最新精品视频| 日韩欧美国产黄色| 国产专区欧美专区| 国产精品入口免费视频一| 国产精品三级久久久久久电影| 亚洲一区亚洲二区亚洲三区| 国产成人极品视频| 成人h片在线播放免费网站| 亚洲乱亚洲乱妇无码| 亚洲大尺度美女在线| www.日韩不卡电影av| 国内精品久久久久伊人av| 大胆欧美人体视频| 欧美激情第一页xxx| 一区二区在线免费视频| 亚洲free性xxxx护士白浆| 91国内揄拍国内精品对白| 欧美日韩国产123| 国产精品爽爽爽爽爽爽在线观看| 国产精品日韩专区| 国产精品亚洲综合天堂夜夜| 美日韩精品免费观看视频| 国产一区二区三区在线播放免费观看| 日韩美女在线看| 伊人久久综合97精品| 欧美日韩在线视频一区二区|