美文网首页
【Kotlin】注解 @JvmName 和 @JvmMultif

【Kotlin】注解 @JvmName 和 @JvmMultif

作者: 果果_Zhen | 来源:发表于2021-02-20 11:37 被阅读0次

@JvmName

一、注解定义

@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.FILE)

@Retention(AnnotationRetention.BINARY)

@MustBeDocumented

public actual annotation class JvmName(actual val name: String)

注解说明:更改方法名,更改get方法名,更改set方法名,更改文件名

使用说明:该注解可以用在方法前, 文件前(package声明前),get 和 set 方法前。需要传入替换的name。

二、举例说明

1、方法前,get方法,set方法前

@JvmName("start") fun jvmStart(){}

var d:Int = 2

@JvmName("setInt") set

@JvmName("getInt") get

相当于

public final void start() {}//原来是jvmStart

public final int getInt() { return d;}//原来是getD

public final void setInt(int var1) { d = var1;}//原来是setD

2、文件前

如果有一个 StringUtils.kt 文件,写了一些关于 String 的扩展方法,此时生成的是 StringUtilsKt 类,如果需要改成 StringUtils 类,则需要把如下代码写在 package 前:

@file:JvmName(name="StringUtils")


@JvmMultifileClass

一、注解定义

@Target(AnnotationTarget.FILE)

@Retention(AnnotationRetention.SOURCE)

@MustBeDocumented

public actual annotation class JvmMultifileClass

注解说明:不同的文件,用 @file:JvmName 使用相同类名时,使用此注解,合并类

二、使用说明

//TestA.kt

@file:JvmName(name=" TestA")

@file: JvmMultifileClass

//TestB.kt

@file:JvmName(name=" TestA")

@file: JvmMultifileClass

此时将生成一个 TestA.class 类,包含 TestA.kt 和 TestB.kt 文件中的方法和属性(不在任何 class 和 object 中)

相当于

//TestA.kt

final class TestA__TestAKt {}

//TestB.kt

final class TestA__TestBKt {}

public final class TestA {

//包含 TestA.kt 和 TestB.kt 的方法声明和属性,并调用相应的 TestA__TestAKt 类和 TestA__TestBKt 类里的方法属性的get和set方法

}

注意事项

1. JvmName 的名字不能与同包下的 class 和 object 同名。

2. JvmMultifileClass 注解的文件,编译器会自动检测相同的声明,并报错。

相关文章

  • 【Kotlin】注解 @JvmName 和 @JvmMultif

    @JvmName 一、注解定义 @Target(AnnotationTarget.FUNCTION, Annota...

  • Kotlin与Java混合开发(3)✔️Java调用Kotlin

    访问 Kotlin 属性访问包级别成员使用 文件名 访问使用 @file:JvmName("自定义名") 访问实例...

  • Kotlin注解入门

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

  • Kotlin使用注解

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

  • Kotlin元注解

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

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

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

  • Kotlin 注解

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

  • Kotlin注解和反射

    简述 本篇文章主要介绍在注解和反射学习中的主要知识 注解的本质 注解实际上就是一种代码标签,它作用的对象是代码。它...

  • kotlin 注解和反射

    反射 在程序的运行过程中动态地调用类的属性和方法:对于任意一个类,都能够知道这个类的所有属性和方法,都能够调用他的...

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

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

网友评论

      本文标题:【Kotlin】注解 @JvmName 和 @JvmMultif

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