티스토리 뷰
사전에 읽을만한 글
- Kotlin - Interfaces
- Kotlin - Data Classes
- Kotlin - Generics
- Guide to Kotlin Interfaces
- Data Classes in Kotlin
- Kotlin data classes - enough boilerplate
- Kotlin for Android Developers: Data Class
IComputer 인터페이스
interface IComputer<CPU, RAM, Mainboard> {
var cpu: CPU,
var ramList : List<RAM>,
var mainboard : Mainboard
fun printInfo(): String {
this.javaClass.declaredFields.forEach {
it.trySetAccessible()
println(it.get(this).toString())
}
}
}
IComputer
인터페이스의 역할은 구현할 클래스들에게 컴퓨터의 스펙을 강제하여 프로젝트 내에서 소스 코드의 일관성을 확보하는데 있다.- 인터페이스명 바로 뒤에
<CPU, RAM, Mainboard>
로 타입 파라메터를 명시하여 구현체에서 다양한 클래스를 사용할 수 있도록 구현했다. - Java와 마찬가지로 Kotlin의
interface
내에 공통 메써드를 구현할 수 있다.
DellComputer 구현체
data class DellComputer (
override var cpu: IntelCPU = IntelCPU(),
override var ramList : List<SamsungRam()> = mutableListOf(),
override var mainboard : GigabyteMainboard = GigabyteMainboard()
) : IComputer<IntelCPU, SamsungRAM, GigabyteMainboard>
DellComputer
는 IComputer의 최종 구현체이다.- Kotlin에서
data
클래스는 Java과 Lombok의 @Data와 유사한 역할을 한다. 클래스명 바로 뒤의 헤더 부분(Primary Constructor
라고 부른다.)에 모든 필드를 작성하면 컴파일 단계에서 자동으로 toString(), hashCode(), equals() 메써드를 구현해준다. [관련 링크] - 추가적으로 data 클래스의 Primay Constructor 선언시 모든 필드를 초기화해주면 컴파일 단계에서 자동으로 파라메터가 없는 빈 생성자를 구현해준다. [관련 링크]
- data 클래스에서 유의할 점은 data 클래스는 data 클래스를 확장할 수 없다. 오직
abstract class
또는 interface만 확장할 수 있음에 유의한다. [관련 링크]
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- maven
- Spring Boot
- Eclipse
- 구동계
- spring
- JHipster
- 태그를 입력해 주세요.
- DynamoDB
- node.js
- jsp
- java
- bootstrap
- MySQL
- 로드 바이크
- Kendo UI
- kotlin
- Kendo UI Web Grid
- 로드바이크
- Docker
- 자전거
- jpa
- graylog
- Tomcat
- jstl
- 알뜰폰
- chrome
- JavaScript
- 평속
- CentOS
- Spring MVC 3
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함