부 생성자와 정적 팩토리 질문드립니다.
557
작성한 질문수 11
부생성자 부분에서 조금 햇갈리는게 생겨서 문의드립니다.
그리고 정적팩토리도 말씀해주셨는데 제가 생각한게 맞나 문의드립니다.
코드는 아래와 같습니다.
아래 주석에 질문 있습니다.
constructor (alien: Alien) : this()<- 이부분에서 this를 좀 나중에 호출하고 싶은지 문의드립니다. 밑에 if를 처리하여 호출하고 싶거든요. 불가능한게 맞을까요?
fun main(args: Array<String>) {
var alien = Alien("에얼리언", AlienType.AType)
//부생성자로 person 생성
var personFromSubConstructor = Person(alien)
println("부생성자로 만든 person의 나이 : ${personFromSubConstructor.age}")
//정적 팩토리로 person생성
val personFromStaticFactory = Person.createPersonFromAlien(alien)
println("주생성자로 만든 person의 나이 : ${personFromStaticFactory.age}")
}
class Person(
val name: String,
var age: Int
){
//에어리언의 타입이 A면 10살, B면 20살
constructor (alien: Alien) : this(alien.name, 0){ //질문1. 일단 임의값으로 주생성상자를 만들어서 객체를 초기화 한 다음에 바꿀수 밖에 없는 것인지 궁금합니다.
if(alien.type == AlienType.AType)
this.age = 10
else
this.age = 20
}
//질문2. 아래와 같은 코드를 정적 팩토리맞을까요?
companion object{
fun createPersonFromAlien(alien: Alien) : Person
= if(alien.type == AlienType.AType) Person(alien.name, 10) else Person(alien.name, 20)
}
}
class Alien(
val name: String,
val type: AlienType
)
enum class AlienType(type: String){
AType("AType"), BType("BType")
}
답변 2
0
constructor (alien: Alien) : this(alien.name, if(alien.type == AlienType.AType) 10 else 20)constructor (alien: Alien) : this(alien.name, alien.type.let{
if(it == AlienType.AType)
10
else
20
})첫번째 질문은 위와같이 익스프레션이나 let같은 스코프 펑션 써서 해결하면 되겠꾼여...
0
안녕하세요 용조님!! 😊😊 아이고~ 네네 맞습니다! 말씀해주신 두 가지 방법으로 name을 처리할 수 있습니다! 다만 개인적으로는 두 번째 방법은 age 를 가변 변수 (var)로 열어야 하다보니 불변 변수 (val) 를 쓸 수 있는 첫 번재 방법을 선호합니다!
그리고 질문 주신 두 번째 내용에 대한 답변도 이어 드리자면, 네네 맞습니다!!
Kotlin에서는 static 키워드 대신 companion object 를 활용해 정적인 함수, 정적인 변수를 표현하고 있습니다! 그래서 companion object 안에 객체를 생성하는 코드를 작성하면 정적 팩토리 메소드인 것이 맞습니다!!! ㅎㅎㅎㅎ
수업노트
0
58
1
싱글톤과 스프링
0
74
2
get() = 3
0
52
2
강사님
0
75
1
강의 복습하면서 생긴 질문
1
97
1
Kotlin과 Java의 현업에서의 활용
0
129
2
data class와 자바의 Lombok을 이용한 DTO 클래스 차이 질문
0
75
1
코틀린에서 상속 시, 주의점에 대한 질문
1
100
3
내용 이해 질문
0
58
1
자바와 코틀린의 함수형 프로그래밍,
1
92
1
플랫폼 타입 설명 문의
2
78
2
널 아님 단언 관련 질문
0
86
1
강의 중 질문
0
81
2
범위 비교 질문
1
93
2
타입캐스팅 궁금한점 질문드립니다.
1
241
2
코틀린 val 질문
0
168
2
완강 후 Kotlin 이런저런 질문 드려봅니다!
3
411
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





