美文网首页
Kotlin 注解2

Kotlin 注解2

作者: Wavky | 来源:发表于2018-07-20 19:24 被阅读0次

@JvmStatic

被标记的函数、变量将编译为Java中的类静态成员变量,不需要通过伴随对象Companion引用:

class C {
    companion object {
        @JvmStatic fun foo() {}
        fun bar() {}
    }
}
// In Java:
C.foo(); // works fine
C.bar(); // error: not a static method
C.Companion.foo(); // instance method remains
C.Companion.bar(); // the only way it works


object Obj {
    @JvmStatic fun foo() {}
    fun bar() {}
}
// In Java:
Obj.foo(); // works fine
Obj.bar(); // error
Obj.INSTANCE.bar(); // works, a call through the singleton instance
Obj.INSTANCE.foo(); // works too

@Synchronized

和Java中给类加上Synchronized修饰符一样,实现线程安全。

@Volatile

和Java的Volatile修饰符作用一样。

@JvmOverloads

Kotlin中@JvmOverloads 注解

在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。

由于默认参数值在Java调用中不起作用:

fun f(a: String, b: Int = 0, c: String="abc"){
    ...
}

相当于在Java中声明

void f(String a, int b, String c){
}

在使用@JvmOverloads注解后:

@JvmOverloads fun f(a: String, b: Int=0, c:String="abc") { ... }

相当于在Java中声明了3个方法:

void f(String a)
void f(String a, int b)
void f(String a, int b, String c)

注:该注解也可用在构造方法和静态方法。

class MyLayout: RelativeLayout {

   @JvmOverloads
   constructor(context:Context, attributeSet: AttributeSet? = null, defStyleAttr: Int = 0)
    : super(context, attributeSet, defStyleAttr)
}

※ 尤其在重写View的时候,需要声明为

class xxx @JvmOverloads constructor()

相关文章

  • Kotlin注解入门

    Kotlin使用annotation class关键字来定义注解。 一、定义注解 Kotlin不允许为注解定义注解...

  • Kotlin 注解2

    @JvmStatic 被标记的函数、变量将编译为Java中的类静态成员变量,不需要通过伴随对象Companion引...

  • Kotlin使用注解

    Kotlin的反射也提供了一些支持注解的API。 一、提取注解信息 Kotlin使用kotlin.Annotion...

  • Kotlin元注解

    Kotlin在kotlin.annotation包下提供了4个Meta注解(元注解),这4个元注解都用于修饰其他的...

  • Kotlin 注解的使用目标(Use-site Target)问

    Kotlin 注解的使用目标(Use-site Target)问题 在测试kotlin的注解的时候发现了些许问题 ...

  • Kotlin实现Parcelable

    Kotlin中实现Parcelable的方式有二种: 一、使用注解 1.在gradle中添加 2. 使用注解标记数...

  • Kotlin 注解

    Kotlin 的注解完全兼容 Java 的注解。 声明注解 可以通过向注解类添加元注解(meta-annotati...

  • 正确理解Kotlin中@JvmOverloads、@JvmSta

    看注解的名字就知道,这是kotlin 为了让Java更好的使用kotlin 编码而写的注解。 一 、@JvmOve...

  • Kotlin 学习笔记--Kotlin@JvmOverloads

    Kotlin 学习笔记--Kotlin@JvmOverloads 注解 这是一个Kotlin系列的教程,目的是为了...

  • Kotlin注解

    定义注解 注解使用 Kotlin的元注解 @Target:定义注解能够应用于哪些目标对象 (CLASS,FUNCT...

网友评论

      本文标题:Kotlin 注解2

      本文链接:https://www.haomeiwen.com/subject/kagqmftx.html