这类型跟想象中不太一样。

来源:10-1 注解的基本概念

压缩疯雷

2020-12-29

为什么拿到的是个代理的类型?

package annotations

annotation class Tag(val name: String)

@Tag("abook")
class Book(var name: String)

fun main() {
    val book = Book("hello Kotlin")
    book::class.annotations.forEach { it: Annotation ->
        println(it::class) //class com.sun.proxy.$Proxy1 ??
    }
    
    println(Tag::class)
}

运行结果

class com.sun.proxy.$Proxy1
class annotations.Tag
写回答

1回答

bennyhuo

2020-12-29

这个是动态代理的结果,只要是对应的接口的子类就行了,具体实现跟编译器和运行时有关系

0
2
bennyhuo
回复
压缩疯雷
注解类是接口,动态代理提供实现类,不然怎么有实例呢
2020-12-29
共2条回复

学会Kotlin 突破开发语言瓶颈

如果有一门语言可以取代Java,那么它一定是Kotlin。

1760 学习 · 481 问题

查看课程