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>
)