Kotlin18 [Kotlin] 코틀린에서의 Null 처리 방법 Nullability적어도 자바 개발자라면, NullPointerException로 고통받아 null에 대한 부정적인 시선이 있을 수도 있습니다.코틀린 개발자의 입장으로는 null과 type에 대해 다시 한 번 생각해볼 필요가 있습니다. 자바에서는 의도치 않은 null 값을 고려하여 코드를 작성해야 했다면,코틀린에서는 의도적으로 사용할 null 값만 고려하면 됩니다. 코틀린은 의도치 않은 null, 정확히는 NullPointerException 을 위해 타입 체크를 컴파일 시점으로 옮깁니다.컴파일러가 컴파일 시 오류를 미리 감지해서,실행 시점에 발생 할 수 있는 예외의 가능성을 줄일 수 있습니다. 즉, 코틀린은 널이 될 수 있는 타입을 지원해 NullPointerException 오류를 컴파일 시점에 감.. 2024. 11. 5. [Kotlin] 컬렉션(Collection) 함수 컬렉션(Collection) 함수컬렉션의 요소들을 순회할 때 for 문을 쓰면 편리하지만, 함수형 프로그래밍을 지향하는 코틀린은 컬렉션을 다룰 때 필요한 여러 가지 유용한 함수들을 지원한다. 컬렉션 함수는 list나 set, map, 또는 배열 (array) 에 일반 함수 또는 람다 함수 형태를 사용하여 for 문 없이도 아이템을 순회하며 참조하거나 조건을 걸고, 구조의 변경까지 가능한 여러 함수를 지칭한다. forEach아래 예시와 같이 사용하며, it이라는 키워드로 각각의 요소에 대응하여 안에 들어있는 함수를 실행한다. forEachIndexed() 라는 고차함수 역시 제공하는데, 이는 각 요소들의 값 뿐만 아니라 인덱스도 함께 사용할 수 있도록 해주는 녀석이다. 예시fun main() { va.. 2024. 11. 4. [Kotlin] by란? by란?특정 처리를 다른 객체에게 넘기는 것(위임)을 의미합니다.코틀린에서 by의 사용은 주로 두가지로 나누어 집니다.프로퍼티 접근자(Property Accessors)의 구현을 다른 객체에 위임(Delegate)하는 것 인터페이스의 구현을 다른 개체에 위임하는 것위임(delegation)이란?위탁자(delegator) → 수탁자(delegate) 형태이며 어떤 일의 책임 및 처리를 다른 클래스 또는 메서드에게 넘긴다는 의미.한 객체가 기능 일부를 다른 객체로 넘겨주어, 첫 번째 객체 대신 수행하도록 하는 일.다른 클래스의 기능을 사용하되 그 기능을 변경하지 않으려면 상속 대신 위임.위임을 활용하면 한 객체의 변경이 다른 객체에 미치는 영향이 작아짐.위임(delegation)을 왜 사용할까?객체지향 언어.. 2024. 11. 2. [Kotlin] open class와 abstract class (feat. 코틀린에서의 final) 코틀린에서의 final코틀린 클래스는 기본적으로 final이며 이는 상속이 불가능하게 한다. 만약 상속이 가능하게 하려면 open키워드를 써야한다.자바에서는 final 로 명시적으로 상속을 금지하지 않는다면 기본적으로 모든 클래스를 다른 클래스가 상속할 수 있다. 하지만, 이렇게 기본적으로 상속이 가능하면 편리한 경우도 많지만 문제가 생기는 경우도 많다. 객체 지향적인 관점에서 객체가 있고, 해당 객체에 대한 코드를 줄이기 위해 재사용 가능하다면 재사용 하는 것이 좋지만, 이러한 사용 방식은 상속하는 기반 클래스가 변경이 없는 경우에만 유효하다.기반 클래스가 변경이 잦은데, 무분별하게 클래스를 상속하게 된다면, 취약한 기반 클래스(fragile base class) 문제에 직면하게 된다. 기반 클래스가 .. 2024. 11. 2. [Kotlin] 깊은 복사 (Deep Copy) 3가지 방법 복사가 뭐가 중요한데?가끔 그럴때가 있다.분명 A 변수/인스턴스의 값을 변경했는데 B까지 바뀐 그런 슬픈 일..띠용해서 주솟값을 찍어보면 더 띠용한다.내가 직접 변경한 A와 변경된 B가 같은 주솟값을 가지고 있다.그것은 바로 얕은 복사와 깊은 복사를 구분하지 않았기 때..문..내 변수는 소중하니까.. 복사하는 방법에 대해 알아보자.. 얕은 복사(Shallow Copy) vs 깊은 복사(Deep Copy)얕은 복사는 말 그대로 얕게 복사하고 깊은 복사는 깊게 복사한다. 얕은 복사(Shallow Copy)얕은 복사 : 객체를 복사할 때, 객체의 주솟값을 복사하는 방법class SampleClass(var id: Int) { ...} 위와 같은 SampleClass가 존재할 때 얕은 복사는 다음과 같이 진행된.. 2024. 11. 2. [Kotlin] val vs Const val val불변 변수실행 시간에 초기화됨런타임에 값을 할당 받음Java의 final 특성과 유사const val컴파일 시간에 초기화됨최상위 레벨 속성(top level property)이거나 object나 companion object의 멤버여야 한다.String이나 원시(primitive) 타입으로 초기화되어야 한다.커스텀 getter를 사용할 수 없다. const val는 왜 primitive type과 string만 초기화가 가능할까?컴파일 시점에 초기화되기 때문이다. Reference Type의 경우 런타임 시점에 Heap 영역에서 객체가 생성된다. 그렇기 때문에 Reference Type의 경우 컴파일 시점에 초기화가 불가능하기 때문에 Primitive Type String만 가능하다. 참고자료htt.. 2024. 11. 2. 이전 1 2 3 다음