데이터 클래스가 Java의 구식 POJO를 대체하는 것으로 보입니다. 이러한 클래스가 상속을 허용 할 것으로 예상되지만 데이터 클래스를 확장하는 편리한 방법이 없다는 것을 알 수 있습니다.Kotlin에서 데이터 클래스 확장하기
open data class Resource (var id: Long = 0, var location: String = "")
data class Book (var isbn: String) : Resource()
위의 코드는 때문에 component1()
방법 중 충돌의 실패 : 내가 필요한 것은이 같은 것입니다. 오직 하나의 클래스에만 data
주석을 남겨도 작업을 수행하지 않습니다.
아마도 데이터 클래스를 확장하는 다른 숙어가 있을까요?
UPD : 자식 하위 클래스에만 주석을 달았지만 data
주석은 생성자에 선언 된 속성 만 처리합니다. 즉, 나는 추한 인을 모든 부모의 속성 open
을 선언하고 무시해야합니다 :
open class Resource (open var id: Long = 0, open var location: String = "")
data class Book (
override var id: Long = 0,
override var location: String = "",
var isbn: String
) : Resource()
무엇이 component1입니까? – maaartinus
Kotlin은 암시 적으로 N 번째 속성의 값을 반환하는 'componentN()'메서드를 만듭니다. docs [Multi-Declarations] (http://kotlinlang.org/docs/reference/multi-declarations.html) – Dmitry
속성을 열려면 Resource abstract를 만들거나 컴파일러 플러그인을 사용할 수도 있습니다. Kotlin은 개폐 원칙에 엄격합니다. –