Android Kotlin:Java的public @interface是否等价于annotation class?
关于Java中
@interface与Kotlin annotation class的区别及Room Dao用法解析 1. Java里@interface和普通interface的核心区别
public @interface Dao {}不是普通接口,它是Java定义注解类型的专属语法,和public interface Dao{}完全是两种不同的东西:- 普通
interface是用来定义方法契约的类型,你可以让类去实现它,重写里面的抽象方法; @interface定义的是注解,本身不能被实现,只能通过@Dao的形式标记在其他类、方法、字段上,用来给代码添加元数据。
- 普通
2. 和Kotlin annotation class的关系
完全等价。Kotlin没有沿用Java的@interface语法,而是用annotation class来定义注解类型。你在Kotlin里写@interface Dao会报错expected annotation identifier after '@',就是因为Kotlin不支持这个Java语法,换成annotation class Dao就可以正常定义注解了。
3. Java允许@interface语法的原因及Room中的作用
- Java从JDK 5开始引入注解机制,为了和普通接口区分开,专门设计了
@interface作为注解类型的定义语法,让编译器能明确识别这是一个注解,而非普通接口。 - 在Room框架中,
@Dao注解是用来标记数据访问对象(DAO)接口的。Room的注解处理器会扫描被@Dao标记的接口,自动生成对应的实现类,帮你封装好SQLite的CRUD操作逻辑,不用手动编写繁琐的数据库底层代码。
内容的提问来源于stack exchange,提问作者Tim Korelov
相关产品推荐
相关产品推荐

