Sto cercando di introdurre Kotlin nel mio progetto corrente. Ho deciso di iniziare con entità che sembrano perfettamente mappate alle classi di dati. Per esempio io ho una classe di dati:Classe dati Kotlin che implementa l'interfaccia Java
data class Video(val id: Long, val ownerId: Long, val title: String, val description: String? = null,
val imgLink: String? = null, val created: Date? = null, val accessKey: String? = null,
val views: Long? = null, val comments: Long? = null, val videoLink: String? = null): Entity
che implementa l'interfaccia Java:
public interface Entity {
Long getId();
}
Ma per qualche motivo compilatore non capisce che il metodo è implementato già:
Classe 'Video' deve essere dichiarato astratto o implementare un membro astratto public abstract fun getId(): kotlin.Long! definito in net.alfad.data.Entity
Devo utilizzare parole chiave aggiuntive per il parametro id? Cosa fa "!" significa nella firma?
Utilizzo di Kotlin 1.0.0 – Odysseus
'!' Nella firma significa che questo è un tipo di platofrm, cioè un tipo proveniente da Java. Puoi saperne di più a riguardo [nei documenti] (http://kotlinlang.org/docs/reference/java-interop.html#notation-for-platform-types) –