일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 안드로이드 라이선스 종류
- ANR이란
- 큐 자바 코드
- 안드로이드 os 구조
- 플러터 설치 2022
- 안드로이드 유닛 테스트 예시
- 클래스
- android ar 개발
- rxjava disposable
- 객체
- 안드로이드 레트로핏 사용법
- rxjava cold observable
- 안드로이드 유닛 테스트
- jvm이란
- 서비스 vs 쓰레드
- 스택 큐 차이
- 스택 자바 코드
- 2022 플러터 설치
- 안드로이드 유닛테스트란
- 안드로이드 라이선스
- jvm 작동 원리
- 서비스 쓰레드 차이
- Rxjava Observable
- 2022 플러터 안드로이드 스튜디오
- 자바 다형성
- ar vr 차이
- 안드로이드 레트로핏 crud
- rxjava hot observable
- 멤버변수
- android retrofit login
- Today
- Total
목록책 (106)
나만을 위한 블로그
require, check, assert 함수를 쓰면 대부분의 코틀린 오류를 처리할 수 있다. 하지만 이외에도 예측하지 못한 상황을 나타내야 하는 경우가 있다. 예를 들어 입력된 JSON 파일 형식에 문제가 있다면 JSONParsingException 등을 발생시키는 게 좋을 것이다. inline fun String.readObject(): T { // ... if (incorrectSign) { throw JsonParsingException() } // ... return result } 표준 라이브러리에는 이를 나타내는 적절한 오류가 없으므로 사용자 정의 오류를 사용했다. 하지만 가능하다면 직접 오류를 정의하는 것보다 최대한 표준 라이브러리의 오류를 사용하는 게 좋다. 표준 라이브러리 오류는 많은 ..
확실하게 어떤 형태로 동작해야 하는 코드가 있다면 예외를 활용해 제한을 걸어주는 게 좋다. 코틀린에선 코드 동작에 제한을 걸 때 아래 방법을 쓸 수 있다. require 블록 : 아규먼트를 제한할 수 있다 check 블록 : 상태와 관련된 동작을 제한할 수 있다 assert 블록 : 어떤 게 true인지 확인할 수 있다. assert 블록은 테스트 모드에서만 작동한다 return 또는 throw와 같이 쓰는 Elvis 연산자 아래는 이런 매커니즘을 쓰는 간단한 예시다 fun pop(num: Int = 1): List { require(num = 0) return if (n = 0) { "Cannot calculate factorial of $n because it is smaller than 0" } r..
타입 추론(type inference) : 코틀린 특징 중 하나. 자바도 자바 10부터 코틀린을 따라 타입 추론을 도입했다. 타입 추론을 쓸 때 위험한 부분들이 있다. 할당 시 inferred 타입은 오른쪽 피연산자에 맞게 설정된다. 절대 슈퍼클래스 or 인터페이스로는 설정되지 않는다 open class Animal class Zebra: Animal() fun main() { var animal = Zebra() animal = Animal() // Type mismatch 오류 } 내가 원하는 타입보다 제한된 타입이 설정됐다면 타입을 명시적으로 지정해서 해결하면 된다. open class Animal class Zebra: Animal() fun main() { var animal: Animal = ..
Null safety : 코틀린 주요 기능 중 하나. 이것으로 인해 자바에서 자주 보던 NPE는 거의 찾아보기 힘들다. 이런 매커니즘이 없는 자바, C 등의 언어와 코틀린을 연결해 사용할 땐 NPE가 발생할 수 있다. 자바에서 String을 리턴하는 메서드가 있고 코틀린에서 이걸 쓰려면 어떻게 해야 하는가? @Nullable이 붙어있으면 -> nullable로 추정하고 String?으로 바꾼다 @NotNull이 붙어있으면 -> String으로 바꾼다 아래처럼 어노테이션이 붙어있지 않은 경우는 어떻게 해아 하는가? public class JavaTest { public String giveName() { return ""; } } 자바에선 모든 것이 nullable일 수 있어서 nullable로 가정하고 ..
상태를 정의할 때는 변수와 프로퍼티의 스코프를 최소화하는 게 좋다. 프로퍼티보다는 지역 변수를 쓰는 게 좋다 최대한 좁은 스코프를 갖게 변수를 사용한다. 예를 들어 반복문 안에서만 변수가 쓰인다면 변수를 반복문 안에 작성하는 게 좋다 요소의 스코프 : 요소를 볼 수 있는 컴퓨터 프로그램 영역. 코틀린의 스코프는 기본적으로 중괄호로 만들어지며 내부 스코프에서 외부 스코프에 있는 요소에만 접근할 수 있다. fun main() { val a = 1 fun fizz() { val b = 2 println("a + b : ${a + b}") } val buzz = { val c = 3 print("a + c : ${a + c}") } } 위 예시에서 fizz, buzz()의 스코프에선 외부 스코프에 있는 변수에 ..
모듈 : 클래스, 객체, 함수, 타입 별칭(typealias), Top-level property 등 여러 요소로 구성됨 타입 별칭? https://kotlinlang.org/docs/type-aliases.html Type aliases | Kotlin kotlinlang.org 코틀린은 모듈로 프로그램을 설계한다. 요소 중 일부는 상태(state)를 가질 수 있다. 읽고 쓸 수 있는 var 프로퍼티를 쓰거나 mutable 객체를 쓰면 상태를 가질 수 있다. 상태를 갖게 하는 건 양날의 검이다. 시간 변화에 따라 변하는 요소를 표현할 수 있다는 건 유용하지만 상태를 적절하게 관리하는 게 어렵다. 프로그램 이해, 디버그가 힘들어짐 : 상태 변경이 많아지면 추적이 힘들다 -> 이런 클래스는 이해하기 어렵고..