[JAVA] OPTIONAL
·
JAVA
Kotlin null safy 확장자 공부하다가, 기왕에 optional도 정리 Optional Null일수도 Null이 아닐수도 있는 값을 감싸는 Wrapper 클래스, 참조시 Null이어도 NullPointException이 발생하지 않게 해줌 Optional 생성메소드 종류 설명 of Null이 아닌 오브젝트로 생성, Null인 오브젝트로 생성을 시도할 경우 NullPointException 발생 empty 빈 Optional 생성 ofNullable Null인지 아닌지 알지 못하는 오브젝트로 Optional 생성 Optional 값 체크 및 가져오기 메소드 종류 설명 isPresent Optional에 담겨있는 오브젝트가 null인지 체크 get Optional에 담겨있는 값 가져오기 orElse..
[KOTLIN] NULL SAFTY / NULL 처리방법
·
KOTLIN
Kotlin의 타입시스템은 null references 위험을 제거하는 것을 목표로 함 Safe Call 연산자 fun main() { val name : String? = null val len = name?.length val upperName = name?.uppercase() println("${upperName}이고 이름자리는 ${len}자리입니다.") } ?.로 표현되며 nullable한 변수를 검사하여 null일 경우 NullPointException을 발생시키지 않고 그대로 null을 반환함 엘비스 연산자 fun main() { val name : String? = null val len = name?.length?:0 val upperName = name?.uppercase()?:"no ..
[KOTLIN] LATEINIT / LAZY
·
KOTLIN
LateInit 변수에 객체를 할당하는 것을 선언과 동시에 하지 않고 할당하는 작업을 뒤로 미루게 해줌 Nullabled 하지 않는 변수를 선언하면서 할당하는 작업을 뒤로 미루고 싶을 때 사용 LateInit은 mutable 변수만 가능하기 때문에 var키워드 가진 변수에만 사용이 가능함 LateInit 예제 fun main() { val lateInit = LateInitSample() println(lateInit.getLateInitText()) lateInit.text = "할당완료" println(lateInit.getLateInitText()) } class LateInitSample { lateinit var text: String fun getLateInitText(): String { /..
[KOTLIN] 시퀀스 (SEQUENCES)
·
KOTLIN
시퀀스 (Sequences) Collections과 같은 Iterable한 자료구조임 Collections와 연산방식에 차이점이 있음 Collections은 기본적으로 Eager evaluation이고, Sequences은 Lazy evaluation임 Lazy evaluation / Eager evaluation 종류 방식 Kotlin Collections Eager evaluation Kotline Sequences Lazy evaluation Java Streams Lazy evaluation Lazy evaluation : 지금 하지 않아도 되는 연산을 최대한 미루고, 필요한 순간에 연산을 수행하는 방식 Eager evalutation : 수행해야 할 연산이 있으면 미루지 않고 바로 처리하는 방식..
[KOTLIN] 확장함수
·
KOTLIN
확장함수 클래스에 상속하거나 디자인 패턴을 사용하지 않고 새로운 기능으로 클래스를 확장 할 수 있는 기능을 제공하게 해줌 마치 기존 클래스의 멤버 함수인 것처럼 사용할 수 있게 해주는 함수 확장함수 구조 fun 클래스이름.함수이름(인자타입): 리턴타입 { 구현부 } 클래스이름은 확장이 정의될 클래스를 명시해주고 수신객체 타입임 (수신객체는 클래스에 속한 인스턴스 객체) 클래스뒤에 . 찍고 함수이름을 정의하여, 함수내부에서는 this키워드로 수신객체멤버를 사용 확장함수 예시 fun main() { val order = Order(listOf(Item("Bread", 25), Item("Wine", 30), Item("Water", 12))) //가장 비싼 아이템 이름 : Wine println("가장 비싼..
[KOTLIN] Scope 함수
·
KOTLIN
Scope 함수 특정 객체의 컨텍스트(Object Context) 내에서 특정 동작을 실행하기 위한 목적만을 가진 함수 Scope 함수를 람다로 사용하게 되면 임시로 Scope를 형성하는데 해당 Scope내에서 객체의 이름을 일일히 참조할 필요 없이 객체를 접근하고 핸들링할 수 있음 let / run / with / apply / also 총 5가지 함수가 있으며, 기본적으로 객체에 붙어 있는 코드 블록을 실행함 Apply fun main() { val book = Book("코틀린 책", 10000).apply { //apply scope안에서 직접 인스턴스의 속성과 함수를 사용함 name = "특가 " + name discount() } println("${book.name}은 가격 : ${book...
[KOTLIN] 컬렉션
·
KOTLIN
Collections (콜렉션) Kotlin은 표준 라이브러리는 집합, 목록 및 지도와 같은 기본 컬렉션 유형에 대한 구현을 제공 기본적으로 Mutable(가변)과 Immutable(불변)을 별개로 지원 Koltlin의 상속구조는 위에 이미지처럼 되어있으며 List, Set, Map과 같은 자료형을 제공함 List 순서가 있는 데이터 집합이며 중복을 허용 데이터를 삭제, 삽입을 해도 순서를 지키는 컬렉션임 Set 순서를 유지하지 않는 데이터 집합이며, 중복되는 데이터가 없음 null객체를 가질 수 있음 Map Key, Value 방식의 데이터 집합 순서를 유지하지 않으며, Key는 중복이 불가함 List / Set / Map 생성함수 요약 불변객체 생성 가변객체 생성 List listOf() mutabl..
[DOCKER] DOCKERFILE 명령어 정리
·
DOCKER
DockerFile 명령어 요약 명령어 용도 FROM base 이미지 설정 WORKDIR 작업 디렉터리 설정 RUN 이미지 빌드 시 커맨드 실행 ENTRYPOINT 이미지 실행 시 항상 실행되야 하는 커맨드 설정 CMD 이미지 실행 시 디폴트 커맨드 or 파라미터 설정 EXPOSE 컨테이너가 리스닝할 포트 및 프로토콜 설정 COPY/ADD 이미지의 파일 시스템으로 파일 또는 디렉터리 복사 ENV 환경 변수 설정 ARG 빌드 시 넘어올 수 있는 인자 설정 DockerFile 포맷 # 주석(Comment) 명령어(INSTRUCTION) 인자(arguments) 각 명령문은 명령어로 시작하고 여러 개의 인자가 따라오며, 인자와 구분이 쉽도록 명령어는 모두 대문자로 써줘야함 FROM FROM FROM : FRO..
[KOTLIN] OPEN 키워드
·
KOTLIN
Open 코틀린에서 특정 클래스의 상속을 허용할 때 해당 클래스 앞에 open 키워드를 사용 오버라이드를 허용하고 싶은 메소드나 프로퍼티에도 앞에 open 키워드를 사용 코틀린 클래스는 기본이 final public.. Open 사용 예시 //open 키워드 선언해서 상속이 가능하도록 함 open class Drink { var name = "음료" open fun drink() { println("${name}를 마시자") } } //open 키워드 선언한 클래스를 상속받았음 class Cola : Drink() { var type = "콜라" override fun drink() { println("${name}중 ${type}를 마시자") } } fun main() { //음료를 마시자 var dr..