π‘ κ°μ§ μμ±μμ ν©ν 리 ν¨μμ λνμ¬ νμ΅νμμ΅λλ€.
κ°μ§ μμ±μ
- Fake Constructor
- ν©ν 리 λ©μλ λλ λλ° κ°μ²΄μ κ΄λ ¨ν΄μ μ¬μ©λλ μ©μ΄μ΄λ©°, μΌλ°μ μΈ μμ±μ νΈμΆ λμ νΉμ 쑰건μ΄λ λ‘μ§μ λ°λΌ κ°μ²΄λ₯Ό μμ±νλ λ©μλλ₯Ό μλ―Έν©λλ€.
- κ°μ²΄ μμ± λ‘μ§μ μΊ‘μννμ¬ μ½λμ κ°λ μ± λ° μ μ§λ³΄μμ±μ λμ΄λ λ° μ μ©νκ² νμ©ν μ μμ΅λλ€.
- Kotlinκ³Ό Javaμμλ μμ±μλΌλ κ°λ μ΄ μμ§λ§ μ€μ λ‘λ μΌλ° ν¨μμ μ°¨μ΄μ μ΄ μμ΅λλ€.
λλ° κ°μ²΄λ₯Ό μ΄μ©ν ν©ν 리 ν¨μ
- companion objectλ₯Ό νμ©ν΄μ κ°μ§ μμ±μλ₯Ό ꡬννμμ΅λλ€.
class User private constructor(val name: String, val age: Int) {
companion object {
fun create(name: String, age: Int): User {
require(age > 0)
return User(name, age)
}
}
}
fun main() {
try {
val user = User.create("jin",20)
catch( e: Exception) { }
- μ μ½λμμλ User.create λ©μλκ° κ°μ§ μμ±μ μν μ νκ³ μμ΅λλ€.
- μμ±μ νΈμΆ μ μ μ ν¨μ± κ²μ¬μ κ°μ μΆκ°μ μΈ λ‘μ§μ ꡬμ±ν λ νμν©λλ€.
- private constructorλ₯Ό μ μΈνμ¬ μΈλΆμμ μ§μ User ν΄λμ€λ₯Ό νΈμΆν μ μκ² μ ννμμ΅λλ€.
- μ΄λ₯Ό ν΅ν΄μ κ°μ²΄ μμ±μ μ ννκ³ , νΉμ λ©μλλ₯Ό ν΅ν΄μλ§ κ°μ²΄λ₯Ό μμ±ν μ μκ² ν μ μμ΅λλ€.
- ν©ν 리 ν¨μμ μ¬μ©μ μλμ κ°μ μ΄μ μ κ°μ§λλ€.
- μμ±μμ μ΄λ¦μ λΆμ¬ν μ μμ΅λλ€.
- μνλ ννμ νμ μ λ°νν μ μμ΅λλ€.
- μ€μ κ°μ²΄μ ꡬνμ μ¨κΈΈ μ μμ΅λλ€.
- μμ±μλ‘ κ΅¬ννκΈ° νλ 볡μ‘ν λ‘μ§μ ꡬνν μ μμ΅λλ€.
fake constructor
- μ€μ 컬λ μ μΈ LIstλ₯Ό μμ±μλ‘ νμ©νλ©΄, μλμ κ°μ΄ λ΄λΆμ μΌλ‘ ꡬνλμ΄ μμ΅λλ€.
- Listλ 컬λ μ μΈν°νμ΄μ€λ‘ μμ±μλ₯Ό κ°μ§ μ μκΈ° λλ¬Έμ, fake constructorλ₯Ό νμ©ν μλΌκ³ λ³Ό μ μμ΅λλ€.
public inline fun <T> List(
size : Int,
init: (index: Int) -> T
): List<T> = MutableList(size, init)
- λλ€λ₯Έ μλ‘λ μ½λ£¨ν΄μμ μ¬μ©νλ Job()κ³Ό CoroutineScope()κ° μμ΅λλ€.
fun Job(parent: Job? = null): CompletableJob = JobImpl(parent)
fun CoroutineScope(context: CoroutineContext): CoroutineScope=
ContextScope(
if (context[Job] != null) context else context + Job()
)
- μ΄λ€ λν μΈν°νμ΄μ€μ΄λ©°, μλ‘μ΄ κ°μ²΄λ₯Ό μμ±ν λ κ°μ§ μμ±μλ₯Ό ν΅ν΄ μμ±νκ³ μμ΅λλ€.
κ°μ§ μμ±μμ νμμ±
- μ μΌ μ€μν μ μ κ°λ μ± ν₯μκ³Ό μΆμνμ λλ€.
- μμ±μλ₯Ό μ¬μ©νμ§ μκ³ κ°μ²΄λ₯Ό μμ±νλ λ°©λ²μλ μμμ μ¬μ©ν ν©ν 리 ν¨μλ₯Ό νμ©νλ κ²μ λλ€.
- μλ°μμ μ μ ν©ν 리 ν¨μλΌλ μ΄λ¦μΌλ‘ μ¬μ© λμ΄μ§ ν¨ν΄μ΄λ©°, μ½νλ¦°μμλ Companion Objectλ₯Ό νμ©ν΄μ ꡬννκ³ μμ΅λλ€.
- κ°μ§ μμ±μλ₯Ό νμ©νλ κ²μ΄ ν©ν 리 ν¨μλ₯Ό νμ©νλ κ²κ³Όμ κ°μ₯ ν° μ°¨μ΄μ μ μΆμνμ λλ€.
- fake constructorλ₯Ό μ¬μ©νμ§ μκ³ ν©ν 리 ν¨μλ₯Ό νμ©νλ€λ©΄ , κ°λ°μ μ
μ₯μμ μμ±νκ³ μνλ κ°μ²΄κ° μΈν°νμ΄μ€λ‘ ꡬνλμλ€λ κ²μ μκ² λ μ μμ΅λλ€.
- μ΄λ μμ‘΄μ± μμ μμΉμ μ§ν€μ§ λͺ»νλ€κ³ λ³Ό μ μμ΅λλ€.
- λν μΈλΆμμ μμλ°κ±°λ, νμ₯νλ λ° μ μ½μ΄ μμ μ μμ΅λλ€.
κ²°λ‘
- Fake Constructorλ κ°μ²΄ μμ± λ‘μ§μ μΊ‘μννκ³ , λ€μν μμ± λ°©λ²μ μ 곡νλ λ° μ 리ν©λλ€.
- νμ§λ§ νμ μμ μ±μ 보μ₯νκΈ° μ΄λ ΅λ€λ λ¨μ μ΄ μμ΅λλ€.
- μ΄λ λμ μΌλ‘ νμ μ κ²°μ νκΈ° λλ¬Έμ μ€ν μμ μ μ€λ₯ κ°λ₯μ±μ΄ μμμ λ»ν©λλ€.
- λν μΌκ΄μ± μλ λ°ν νμ μ κ°μ§ μ μμ΅λλ€.
- ν©ν 리 ν¨μλ μ μ λ©€λ²μ μ±κΈν€ ν¨ν΄μ ꡬννλ λ° μ ν©νλ©°, νμ
μμ μ±μ 보μ₯ν μ μμ΅λλ€.
- νμ§λ§ ν΄λμ€ κ΅¬μ‘°λ₯Ό 볡μ‘νκ² λ§λ€ μ μμΌλ©°, μμκ³Ό νμ₯μ μ μ½μ΄ μκΈΈ μ μμ΅λλ€.