본문 바로가기

전체 글

(37)
[Kotlin] Java 컬렉션 Kotlin에서 사용하기, Kotlin 배열 #Java에서 선언된 컬렉션, Kotlin에서 사용 Java에서 정의한 타입을 코틀린에서는 플랫폼 타입으로 본다 (컬렉션 타입도 마찬가지) 플랫폼 타입은 널관련 정보가 없으므로, Nullable Non-Nullable 2가지 타입 모두가 될 수 있다 플랫폼 타입은 Mutable 관련 정보도 없으므로 Read Only, Mutable 2가지 타입 모두가 될 수 있다 즉, Java에서 선언된 컬렉션은 플랫폼 타입이며, Nullable과 Mutable 모두 개발자가 판단해서 사용해야 한다 *[예제] Java에서 선언된 Interface, Kotlin에서 구현하기 -Interface의 시그니처에 컬렉션 타입이 들어 있는 경우 //********* Java ********* public interface Java..
[JAVA] 추상클래스/인터페이스 (+Kotlin) #Abstract Class / Interface 1)개념 및 사용형태 2)차이점 3)쓰임새 에 대해 정리해보도록 하겠습니다 #1 - Abstract Class '추상화'라는 건 공통 된 특성을 추출한다는 의미입니다 ex) 웹개발자, 서버개발자, 모바일개발자 공통점은 '개발'이라는 라는 특성을 추출 추상 클래스는 공통적 특성을 1) 추출/구현해서 자식 클래스들에게 제공 하고 2) 추상 메소드를 선언하고 자식 클래스들에게 각각의 구현을 강제함으로써(overriding) 1)코드를 재사용 2)필드와 함수 이름을 통일 시키는 역할을합니다 즉, 미완성된 클래스를 자식 클래스에게 완성 하도록 유도하는, 상속을 위한 클래스 입니다 추상 클래스는 인스턴스를 생성하지 못하고 부모 클래스로만 사용 된다 일반 클래스와 마..
[Kotlin] 5. Not-null assertion, let 함수, lateinit # 널이 아님을 단언한다 !! Nullable 타입 뒤에 !!(not-null assertion)을 붙이면 강제로 Non-Null 타입으로 변경된다 이렇게 단언 해 놓고 null값이 들어가면 NullPointException이 발생함 즉, 단언이 틀릴경우 Exception이 발생해도 감수하겠다는 뜻 !!을 사용하고 NPE가 발생했을 경우 에러가 발생한 Line수는 나오지만 어떤 식에서 예외가 발생했는지는 나오지 않는다.즉, 'students!!.subject!!.classtype' 처럼 한 줄에 단언문을 여러개 쓸 경우 어떤 값이 null이어서 발생한 에러인지 디버깅 하기 힘드니 한 줄에 단언문을 여러개 쓰는 경우는 피하자 유의해서 사용해야 하며 꼭 필요한 경우에만 쓰도록 하자 간단 사용 예 fun ge..
[Kotlin] 5. Nullable 타입, Safe Call, 엘비스 연산자, Safe Cast # Null이 될 수 있는 타입 코틀린에는 널이 될 수 있는 타입이 따로 존재하며 명시적으로 타입 뒤에 '?'를 붙여 사용한다 ex)String? 모든 타입은 기본적으로 Non- Null Type 이라는 의미 Nullable Type일 경우 변수.메소드()처럼 사용할 수 없다 Non-Null Type에 null도, nullable 타입도 대입할 수 없으며, 함수의 파라미터에도 마찬가지 Nullable Type을 일단 널 체크 하고 나면, Non-Null Type처럼 사용할 수 있다 이렇게 컴파일 시점 NullPointException이 발생할 가능성을 체크해서 Null Safety를 보장할 수 있다 모든 검사는 컴파일 시점에 수행되므로, Nullable/Non-Null 타입 처리 관련해서 실행시점에 추가..
[Kotlin] CoRoutines 코루틴 개념과 코틀린에서의 코루틴 사용법에 대해서 알아보겠습니다. (CoroutineBuilder, CoroutineContext, CoroutineScope, Dispatcher, Job...) #코루틴 (Co + Routines) Co는 Cooperation의 약자로 '서로 자발적으로 상호협력하는 Routines(함수)' 의 뜻 즉, 번갈아가면서 서로 다른 함수들이 실행되는, 새로운 Thread가 만들지 않고도 단일 스레드에서도 비순차적 흐름을 프로그래밍 할 수 있는 기능 여러 개의 함수가 동시에 시작 or 동시에 끝나는 처리를 할 때도 편리하게 사용할 수 있음 이런 코루틴의 개념을 지원하는 언어 중 하나가 Kotlin이다 #코루틴 한 줄 정의 정의 : '비선점형 멀티태스킹을(non-preemptiv..
[Kotlin] 4. 람다 - with/apply #with/apply (수신 객체 지정 람다) with/ apply ? 코틀린 표준 라이브러리 함수 수신 객체 지정 람다를 사용하는 함수 수신 객체 지정 람다(lambda with receiver) 란? 람다 안에서 어떤 객체의 함수를 객체 이름을 명시하지 않고 사용하는 람다 어떤 객체를 사용할지 미리 정해줘야 함 (이 때 이 객체를 '수신 객체', 'receiver'라고 한다) 즉, 람다 안에서 사용할 객체를 미리 지정 해 놓고 객체 명시 없이 사용하겠다는 뜻 #with 1~10 홀/짝 구분 예제 - with 함수 적용 전 strBuilder를 반복해서 호출 하는 것을 볼 수 있다 val strBuilder = StringBuilder() strBuilder.append("****************..
[Kotlin] 4.람다 - 함수형 인터페이스(SAM 인터페이스) #코틀린과 자바의 함수형 인터페이스의 관계 결론부터 말하자면 '코틀린에서 함수형 인터페이스를 인자로 받는 Java함수를 호출 할 경우, 인터페이스 객체 대신 람다를 넘길 수 있다' 예를 들면 이렇게 button.setOnClickListener { println("객체 대신 람다를 넘기고 있음") } -여기서 '함수형 인터페이스'가 'SAM 인터페이스' 이다 -Java에 정의된 함수를 Kotlin에서 사용하는 경우를 말합니다 #SAM 인터페이스 1) SAM이란? Single abstract method / 단일 추상 메소드 2) SAM 인터페이스란? 추상 메소드가 단 1개 있는 인터페이스 '함수형 인터페이스' 라고도 한다(Functional interface) 3) 대표적인 SAM 인터페이스는? View..
[Android] StatusBar 없애기/색상변경/글자색상변경 #StatusBar Splash에선 없애고 싶고, WebView에선 '흰색 바탕+ 어두운 글씨'로 보여주고 싶을 경우 유용하게 쓰인다 # StatusBar 없애기 themes.xml 테마파일 # StatusBar 색상 변경 + 글자 색상 변경 themes.xml 테마파일 lightStatusBar = true : 밝은색의 Status Bar를 사용하겠다는 것이니, 글자 색이 어둡게 표현 된다 문제 있을시 알려 주세요. 좋은 하루 되세요!