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

Kotlin基礎(chǔ)學(xué)習(xí)之Deprecated與Suppress注解使用

 更新時(shí)間:2019年08月14日 09:43:04   作者:XuYanjun  
這篇文章主要給大家介紹了關(guān)于Kotlin基礎(chǔ)學(xué)習(xí)之Deprecated與Suppress注解使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Kotlin具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

在 Java 中通常對(duì)一些方法進(jìn)行一些注解操作,但是很多注解在 Java 代碼上沒(méi)有問(wèn)題,如果切換到 Kotlin 上時(shí),如果繼續(xù)使用這些注解就會(huì)存在一些問(wèn)題,本篇主要對(duì)比一些常用 Java 注解和 Kotlin 注解使用轉(zhuǎn)換。

Deprecated

在 Java 方法中,如果需要廢棄一個(gè)方法,只需要在方法錢加上 @Deprecated 即可,例如這樣:

@Deprecated
public void test(){

}

但是如果在 Kotlin 代碼中直接使用這個(gè)注釋,就存在問(wèn)題了:

Deprecated

翻看源碼發(fā)現(xiàn),Kotlin 中對(duì) Deprecated 這個(gè)注解做了加強(qiáng):

@Target(CLASS, FUNCTION, PROPERTY, ANNOTATION_CLASS, CONSTRUCTOR, PROPERTY_SETTER, PROPERTY_GETTER, TYPEALIAS)
@MustBeDocumented
public annotation class Deprecated(
 val message: String,
 val replaceWith: ReplaceWith = ReplaceWith(""),
 val level: DeprecationLevel = DeprecationLevel.WARNING
)

源碼中 Deprecated 存在三個(gè)參數(shù),其中第二個(gè)和第三個(gè)參數(shù)存在默認(rèn)值,第一個(gè)參數(shù) message 沒(méi)有,也就是說(shuō),要想正常使用時(shí),必須要帶上 message 信息,正常寫法是這樣:

@Deprecated("xxx")
fun testKt(){

}

三個(gè)參數(shù)說(shuō)明:

message:解釋棄用并建議使用替代 API 的信息

level:指定如何在代碼中報(bào)告已棄用的元素用法,level 存在三種枚舉

public enum class DeprecationLevel {
/** Usage of the deprecated element will be reported as a warning. */
WARNING,
/** Usage of the deprecated element will be reported as an error. */
ERROR,
/** Deprecated element will not be accessible from code. */
HIDDEN
}
  • WARNING:僅用于警告 API 使用者,不會(huì)中斷其編譯或運(yùn)行時(shí)使用
  • ERROR:禁止使用該 API,如果調(diào)用了這類API直接編譯報(bào)錯(cuò)
  • HIDDEN:直接隱藏該 API

replaceWith:指定可用于替換已棄用的函數(shù),屬性或類的代碼片段。不明白?一圖看懂:

replace

SuppressWarnings 與 Suppress

在 Java 代碼中,如果需要消除一些編譯時(shí)的警告,通常使用 @SuppressWarnings("xxx") 來(lái)進(jìn)行解決的,而在 Kotlin 中,不能使用這個(gè)注解,需要使用Kotlin中內(nèi)置的 @Suppress("xxx") 帶替代。

例如,做 SDK 開發(fā)的時(shí)候,通常有很多對(duì)外 API ,正常情況下,不調(diào)用的時(shí)候,會(huì)有如下類似警告:

hello

對(duì)于有強(qiáng)迫癥的來(lái)說(shuō)這很難受,為了消除這種警告我們可以這樣:

@Suppress("unused")
fun hello() {
 println("hello")
}

如果是Java代碼則寫成這樣:

@SuppressWarnings("unused")
public void hello(){
 
}

又例如,有時(shí)候需要做一些類型轉(zhuǎn)換時(shí):

hello

此時(shí)為了消除這種警告,我們可以這樣操作:

fun unChecked(){
 val list: List<Any> = emptyList()

 @Suppress("UNCHECKED_CAST")
 list as List<String>
}

如果在Java代碼中則需要寫成 @SuppressWarnings("unchecked")

Kotlin 中,Suppress 支持消除的警告有很多,可以通過(guò)源碼查閱更多相關(guān)參數(shù)信息,例如:

hello

總結(jié)

其實(shí)這兩種注解使用起來(lái)都不難,主要是平常 Java 代碼寫習(xí)慣了,切換到 Kotlin 之后,很多 API 并不熟悉,需要在開發(fā)過(guò)程中慢慢了解與積累,俗話說(shuō)好記性不如爛筆頭就是這么個(gè)道理。

好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Android入門之TabHost與TabWidget實(shí)例解析

    Android入門之TabHost與TabWidget實(shí)例解析

    這篇文章主要介紹了Android入門之TabHost與TabWidget,對(duì)于Android初學(xué)者有一定的學(xué)習(xí)借鑒價(jià)值,需要的朋友可以參考下
    2014-08-08
  • Android Studio手動(dòng)配置Gradle的方法

    Android Studio手動(dòng)配置Gradle的方法

    Gradle:Gradle是一個(gè)基于Apache Ant和Apache Maven概念的項(xiàng)目自動(dòng)化建構(gòu)工具。它使用一種基于Groovy的特定領(lǐng)域語(yǔ)言(DSL)來(lái)聲明項(xiàng)目設(shè)置,拋棄了基于XML的各種繁瑣配置,本文給大家介紹Android Studio手動(dòng)配置Gradle的方法,一起看看吧
    2017-11-11
  • Android仿iOS實(shí)現(xiàn)側(cè)滑返回功能(類似微信)

    Android仿iOS實(shí)現(xiàn)側(cè)滑返回功能(類似微信)

    這篇文章主要為大家詳細(xì)介紹了Android仿iOS實(shí)現(xiàn)側(cè)滑返回功能,類似微信功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 淺談Android RecyclerView 間距全適配

    淺談Android RecyclerView 間距全適配

    本篇文章主要介紹了淺談Android RecyclerView 間距全適配,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • Android中日期與時(shí)間設(shè)置控件用法實(shí)例

    Android中日期與時(shí)間設(shè)置控件用法實(shí)例

    這篇文章主要介紹了Android中日期與時(shí)間設(shè)置控件用法,實(shí)例分析了Android日期與時(shí)間相關(guān)控件的相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Android 跨進(jìn)程通Messenger(簡(jiǎn)單易懂)

    Android 跨進(jìn)程通Messenger(簡(jiǎn)單易懂)

    這篇文章主要介紹了Android Messenger跨進(jìn)程通的相關(guān)資料,非常簡(jiǎn)單容易理解,對(duì)android messenger 進(jìn)程通訊的相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2016-08-08
  • java實(shí)現(xiàn)靜默安裝apk

    java實(shí)現(xiàn)靜默安裝apk

    本文給大家分享的是如何實(shí)現(xiàn)偷偷的把一個(gè)安卓apk應(yīng)用安裝到手機(jī)上,而且不顯示確認(rèn)框,主要是通過(guò)反射來(lái)實(shí)現(xiàn),好了,小伙伴們仔細(xì)看下代碼吧,有需要的小伙伴可以參考下。
    2015-04-04
  • Android可循環(huán)顯示圖像的Android Gallery組件用法實(shí)例

    Android可循環(huán)顯示圖像的Android Gallery組件用法實(shí)例

    這篇文章主要介紹了Android可循環(huán)顯示圖像的Android Gallery組件用法,結(jié)合實(shí)例形式分析了Gallery組件的功能,使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2016-04-04
  • Android GSYVideoPlayer視頻播放器功能的實(shí)現(xiàn)

    Android GSYVideoPlayer視頻播放器功能的實(shí)現(xiàn)

    這篇文章主要介紹了Android GSYVideoPlayer視頻播放器功能的實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Android編譯的注意事項(xiàng)

    Android編譯的注意事項(xiàng)

    今天小編就為大家分享一篇關(guān)于Android編譯的注意事項(xiàng),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12

最新評(píng)論

凤庆县| 馆陶县| 黎城县| 扶绥县| 巴楚县| 固阳县| 江山市| 额尔古纳市| 广州市| 米脂县| 文安县| 门源| 延长县| 河北区| 新绛县| 茌平县| 漳州市| 张家港市| 浏阳市| 安化县| 胶州市| 乌拉特后旗| 楚雄市| 贵港市| 射洪县| 西畴县| 黑龙江省| 辽阳市| 内江市| 陵川县| 犍为县| 张家港市| 临西县| 沙洋县| 云林县| 筠连县| 从化市| 丰台区| 太仆寺旗| 大埔县| 保山市|