Custom Getter 에 대해 질문이 있습니다.
522
작성한 질문수 5
안녕하세요 태현님!
이 강의 덕분에 코틀린을 재미있게 학습하고 있습니다.
Custom Getter 에 대해 질문이 있어서 질문드립니다.
name 을 대문자로 만드는 것을 예시로 Custom Getter 를 사용하는 것과, 프로퍼티로써 사용하는 것에 대해 설명해주셨는데요, 제가 잘 이해하지 못했는지.. 두 방법에 대해 차이가 있는것 같습니다.
Custom Getter 를 사용할 경우
fun main() {
val personTest = PersonTest("abc", 10)
println(personTest.name)
}
class PersonTest (
name: String,
var age: Int
) {
init {
if (age <= 0) {
throw IllegalArgumentException("나이는 ${age}일 수 없습니다." )
}
println("초기화 블록")
}
val name = name
get() = field.uppercase()
}위의 경우 ABC가 출력이 됩니다.
생성자를 통해 name 값이 "abc"로 객체가 생성되었으나, custom getter 를 통해 uppercase 되어서 ABC 로 출력되는 것을 볼 수 있습니다.
프로퍼티를 사용하는 경우
fun main() {
val personTest = PersonTest("abc", 10)
println(personTest.name)
println(personTest.uppercaseName)
}
class PersonTest (
val name: String,
var age: Int
) {
init {
if (age <= 0) {
throw IllegalArgumentException("나이는 ${age}일 수 없습니다." )
}
println("초기화 블록")
}
val uppercaseName: String
get() = this.name.uppercase()
}위의 경우는 그대로 "abc" 가 출력이 됩니다.
당연히 personTest 객체를 통해 프로퍼티인 upppercaseName을 출력하면 ABC가 출력이 되지만요..
강의에서 태현님께서 backing field 를 사용하지 않고, 프로퍼티를 통해 사용한다고 하셨는데.. 둘의 작동이 다른 것 같아서요!
제가 짐작컨데, 말씀하신 내용이
backing field 처럼 사용되는 경우가 많지 않다.
주로 getter 로 값을 가져오는 경우에는 값 자체를 가져오는 경우가 많으므로 프로퍼티를 통해 값을 가져오도록 한다.
라고 이해해도 되는 것일까요?
답변 1
1
안녕하세요, Joshua Kim님!! 질문 주셔서 감사합니다~!!! 😊
강의에서 태현님께서 backing field 를 사용하지 않고, 프로퍼티를 통해 사용한다고 하셨는데.. 둘의 작동이 다른 것 같아서요!
라고 말씀해주셨는데요!!! 정확하십니다~~ 👍 둘의 작동이 같은 것은 아니고 "결과적으로" backing field를 사용해서 대문자 ABC를 가져올 수도 있고 property (upperCaseName)를 사용해서 대문자 ABC를 가져올 수도 있다는 의미였어요!
그리고 그 중 property를 더 많이 쓰는 이유가
backing field 처럼 사용되는 경우가 많지 않다.
주로 getter 로 값을 가져오는 경우에는 값 자체를 가져오는 경우가 많으므로 프로퍼티를 통해 값을 가져오도록 한다.
말씀해주신 1번, 2번이 정확하게 맞습니다. 👍👍
완벽하게 이해하신 것 같습니다.
혹시라도 아직 해결되지 않으신 점이나 다른 궁금한 점 생기시면 언제든 편하게 질문 남겨주세요.
감사합니다!! 🙏
수업노트
0
56
1
싱글톤과 스프링
0
72
2
get() = 3
0
51
2
강사님
0
75
1
강의 복습하면서 생긴 질문
1
95
1
Kotlin과 Java의 현업에서의 활용
0
127
2
data class와 자바의 Lombok을 이용한 DTO 클래스 차이 질문
0
75
1
코틀린에서 상속 시, 주의점에 대한 질문
1
97
3
내용 이해 질문
0
57
1
자바와 코틀린의 함수형 프로그래밍,
1
91
1
플랫폼 타입 설명 문의
2
77
2
널 아님 단언 관련 질문
0
86
1
강의 중 질문
0
80
2
범위 비교 질문
1
92
2
타입캐스팅 궁금한점 질문드립니다.
1
239
2
코틀린 val 질문
0
167
2
완강 후 Kotlin 이런저런 질문 드려봅니다!
3
410
2
확장함수 스타일 질문
0
140
2
확장 프로퍼티 질문
1
158
1
update 함수를 만든다는게 어떤 의미인지 예시가 궁금합니다!
1
283
1
java class의 NotNull 어노테이션 인식
1
264
1
[16강] 확장함수 관련 질문입니다!
1
134
2
리턴타입 사용시 any를 사용해도 괜찮은가요?
1
142
1
안녕하세요 scope function 에 receiver 가 없는 경우
1
172
1





