2016-03-02 7 views
13

デフォルトのparamsがこれを好んで、クラスのプライマリコンストラクタからJavaに見える多くのコンストラクタを自動生成できないのはなぜですか?クラスプライマリコンストラクタのJvmOverloadsアノテーション

@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 

このアノテーションは、「クラス」をターゲットに適用されていません

答えて

30

それは禁止されていないです、あなただけの間違ったターゲットに@JvmOverloadsを適用しています。主なコンストラクタに注釈を付けるための適切な方法は、明示的に前に@JvmOverloadsconstructorキーワードを指定することです。今、私は見

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 
+0

、ありがとう – Odysseus

+0

は注意してください:いくつかのバグが@JvmOverloadsでありますように見えます。私がカスタムビューでそれを使用するとインスタント実行は失敗しますが、コンストラクタを自分で定義すると動作します – Gavriel

関連する問題