2016-03-02 6 views
13

Почему запрещено автогенерировать многие конструкторы, видимые для 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 к неправильной цели. Правильный способ аннотировать основной конструктор должен явно указать constructor ключевое слово с @JvmOverloads перед:

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

Смежные вопросы