Android 注释可以';t不能用作注释参数

Android 注释可以';t不能用作注释参数,android,kotlin,android-room,Android,Kotlin,Android Room,我得到了一个错误,尽管执行与文档中所述完全相同的操作: 数据类播放歌曲( @嵌入式val播放列表:播放列表, @关系( parentColumn=“playlyid”, entityColumn=“songId”, associateBy=@Junction(播放列表SongCrossRef::class) ) val歌曲:列表 ) 我的问题是: 数据类FileEntryWithTags( @嵌入式val fileEntry:fileEntry, @关系( parentColumn=File

我得到了一个错误,尽管执行与文档中所述完全相同的操作:

数据类播放歌曲(
@嵌入式val播放列表:播放列表,
@关系(
parentColumn=“playlyid”,
entityColumn=“songId”,
associateBy=@Junction(播放列表SongCrossRef::class)
)
val歌曲:列表
)
我的问题是:

数据类FileEntryWithTags(
@嵌入式val fileEntry:fileEntry,
@关系(
parentColumn=FileEntry.COLUMN\u UUID,
entityColumn=Tag.COLUMN\u ID,
associateBy=@Junction(FileEntryTagCrossRef::class)
)
val标签:列表
)

看起来Android文档中有错误。Kotlin参考资料中的页面告诉我们:

如果某个批注用作另一个批注的参数,则其名称的前缀不带
@
字符:

注释类替换为(val表达式:字符串)
注释类已弃用(
val消息:字符串,
val replaceWith:replaceWith=replaceWith(“”)
@已弃用(“此函数已弃用,请改用===”,替换为(“此===其他”))
因此,您的代码应该是:

数据类FileEntryWithTags(
@嵌入式val fileEntry:fileEntry,
@关系(
parentColumn=FileEntry.COLUMN\u UUID,
entityColumn=Tag.COLUMN\u ID,
associateBy=Junction(FileEntryTagCrossRef::class)
)
val标签:列表
)

非常有意思的问题-接下来看看解决方案,看看这是否是开发人员文档中的错误。@Ryan这是Android文档中的错误。Kotlin引用明确指出,
@
不应在此上下文中作为注释名称的前缀。您是对的。这是Android Room文档中的错误。没有
@
,一切正常。
data class PlaylistWithSongs(
    @Embedded val playlist: Playlist,
    @Relation(
         parentColumn = "playlistId",
         entityColumn = "songId",
         associateBy = @Junction(PlaylistSongCrossRef::class)
    )
    val songs: List<Song>
)
data class FileEntryWithTags(
        @Embedded val fileEntry: FileEntry,
        @Relation(
                parentColumn = FileEntry.COLUMN_UUID,
                entityColumn = Tag.COLUMN_ID,
                associateBy = @Junction(FileEntryTagCrossRef::class)
        )
        val tags: List<Tag>
)