JvmOverloads类主构造函数的注释

Ody*_*eus 20 constructor annotations kotlin

为什么禁止从类主构造函数自动生成Java中可见的许多构造函数,默认params喜欢这个?

@JvmOverloads
class Video(private val id: Long, val ownerId: Long, var title: String? = null, var imgLink: String? = null, var videoLink: String? = null,
        var description: String? = null, var created: Date? = null, var accessKey: String? = null, var duration: Long? = null,
        var views: Long? = null, var comments: Long? = null) : Entity
Run Code Online (Sandbox Code Playgroud)

此注释不适用于目标"类"

Vla*_*nov 53

这不是禁止的,你只是申请@JvmOverloads错误的目标.注释主构造函数的正确方法是constructor使用@JvmOverloadsbefore 显式指定关键字:

class Video @JvmOverloads constructor(
    private val id: Long,
    val ownerId: Long,
    var title: String? = null,
    var imgLink: String? = null,
    var videoLink: String? = null,
    var description: String? = null,
    var created: Date? = null,
    var accessKey: String? = null,
    var duration: Long? = null,
    var views: Long? = null,
    var comments: Long? = null
) : Entity
Run Code Online (Sandbox Code Playgroud)

  • 并记住在开头放置没有默认值的参数(就像上面的示例一样)。没有这个@JvmOverloads就不起作用。 (2认同)