2016-03-02 7 views
13

Warum ist es verboten, viele Konstruktoren, die für Java sichtbar sind, aus dem primären Konstruktor der Klasse mit Standardparametern zu erstellen?JvmOverloads Annotation für Klasse primärer Konstruktor

@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 

Diese Anmerkung gilt nicht für ‚Klasse‘ Es ist nicht verboten

Antwort

30

zum Ziel, Sie sind nur @JvmOverloads auf das falsche Ziel anwenden. Der richtige Weg, primären Konstruktor mit Anmerkungen versehen ist explizit constructor Schlüsselwort angeben, mit @JvmOverloads vor:

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

Jetzt sehe ich, thanx – Odysseus

+0

Vorsicht: es sieht aus wie es in @JvmOverloads einige Fehler ist. Wenn ich es für benutzerdefinierte Ansichten verwende, schlägt Instant Run fehl, aber wenn ich die Konstruktoren selbst definiere, funktioniert es – Gavriel

Verwandte Themen