Kotlin基礎學習之Deprecated與Suppress注解使用
前言
在 Java 中通常對一些方法進行一些注解操作,但是很多注解在 Java 代碼上沒有問題,如果切換到 Kotlin 上時,如果繼續(xù)使用這些注解就會存在一些問題,本篇主要對比一些常用 Java 注解和 Kotlin 注解使用轉換。
Deprecated
在 Java 方法中,如果需要廢棄一個方法,只需要在方法錢加上 @Deprecated 即可,例如這樣:
@Deprecated
public void test(){
}
但是如果在 Kotlin 代碼中直接使用這個注釋,就存在問題了:

Deprecated
翻看源碼發(fā)現,Kotlin 中對 Deprecated 這個注解做了加強:
@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 存在三個參數,其中第二個和第三個參數存在默認值,第一個參數 message 沒有,也就是說,要想正常使用時,必須要帶上 message 信息,正常寫法是這樣:
@Deprecated("xxx")
fun testKt(){
}
三個參數說明:
message:解釋棄用并建議使用替代 API 的信息
level:指定如何在代碼中報告已棄用的元素用法,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 使用者,不會中斷其編譯或運行時使用
- ERROR:禁止使用該 API,如果調用了這類API直接編譯報錯
- HIDDEN:直接隱藏該 API
replaceWith:指定可用于替換已棄用的函數,屬性或類的代碼片段。不明白?一圖看懂:

replace
SuppressWarnings 與 Suppress
在 Java 代碼中,如果需要消除一些編譯時的警告,通常使用 @SuppressWarnings("xxx") 來進行解決的,而在 Kotlin 中,不能使用這個注解,需要使用Kotlin中內置的 @Suppress("xxx") 帶替代。
例如,做 SDK 開發(fā)的時候,通常有很多對外 API ,正常情況下,不調用的時候,會有如下類似警告:

hello
對于有強迫癥的來說這很難受,為了消除這種警告我們可以這樣:
@Suppress("unused")
fun hello() {
println("hello")
}
如果是Java代碼則寫成這樣:
@SuppressWarnings("unused")
public void hello(){
}
又例如,有時候需要做一些類型轉換時:

hello
此時為了消除這種警告,我們可以這樣操作:
fun unChecked(){
val list: List<Any> = emptyList()
@Suppress("UNCHECKED_CAST")
list as List<String>
}
如果在Java代碼中則需要寫成 @SuppressWarnings("unchecked")
Kotlin 中,Suppress 支持消除的警告有很多,可以通過源碼查閱更多相關參數信息,例如:

hello
總結
其實這兩種注解使用起來都不難,主要是平常 Java 代碼寫習慣了,切換到 Kotlin 之后,很多 API 并不熟悉,需要在開發(fā)過程中慢慢了解與積累,俗話說好記性不如爛筆頭就是這么個道理。
好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。
相關文章
Android入門之TabHost與TabWidget實例解析
這篇文章主要介紹了Android入門之TabHost與TabWidget,對于Android初學者有一定的學習借鑒價值,需要的朋友可以參考下2014-08-08
Android可循環(huán)顯示圖像的Android Gallery組件用法實例
這篇文章主要介紹了Android可循環(huán)顯示圖像的Android Gallery組件用法,結合實例形式分析了Gallery組件的功能,使用方法及相關注意事項,需要的朋友可以參考下2016-04-04
Android GSYVideoPlayer視頻播放器功能的實現
這篇文章主要介紹了Android GSYVideoPlayer視頻播放器功能的實現,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03

