2016-03-02 22 views
13

Dlaczego zabronione jest automatyczne generowanie wielu konstruktorów widocznych dla języka Java z podstawowego konstruktora klasy z domyślnymi parametrami?Adnotacja JvmOverloads dla konstruktora podstawowego klasy

@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 

Ta adnotacja nie ma zastosowania do celu 'klasa'

Odpowiedz

30

To nie jest zabronione, to są po prostu stosując @JvmOverloads do niewłaściwego celu. Właściwym sposobem opisywania podstawowy konstruktor jest jawnie określić constructor słowa kluczowego z @JvmOverloads przed:

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

Teraz widzę, thanx – Odysseus

+0

uwaga: wygląda na to, że jakiś bug w @JvmOverloads. Kiedy używam go w niestandardowych widokach, natychmiastowy błąd kończy się niepowodzeniem, ale gdy sam definiuję konstruktorów, to działa – Gavriel