목록언어/Java&Kotlin (14)
Simple&Natural
withContext와 coroutineScope의 비교 두 함수 모두 suspend fun으로서 코루틴 내부에서 블록을 중단시키기 때문에 유사해 보인다. 그러나, coroutineScope는 withContext의 한 유형으로 볼 수 있다. 즉, coroutineScope는 withContext(this.coroutineContext) 와 본질적으로 같은 의미를 지닌다. coroutineScope는 Dispatcher를 설정할 수 없다 (무조건 현재 호출한 context를 사용하기 때문이다) - coroutineScope는 에러처리 등의 목적으로 특정 코드를 하나의 블럭으로 묶고 싶을 때 사용 - withContext는 해당 코드블럭을 특정 Context에서 실행하고 싶을 때 사용하는 용도 (네트워크 ..
https://yaboong.github.io/java/2018/05/26/java-memory-management/ 자바 메모리 관리 - 스택 & 힙 개요 Java 에서 메모리 관리는 어떻게 이루어지는지 알아보기 위함. Stack 과 Heap 영역 각 역할에 대해 알아본다. 간단한 코드예제와 함께 실제 코드에서 어떻게 Stack 과 Heap 영역이 사용되는지 살펴 yaboong.github.io
코틀린 코드 사이에서는 SAM 인터페이스 변환을 지원하지 않는다. 기존의 자바코드의 경우 view.setOnClickListener { //TODO } 와 같은 형태를 지원하는데 이는 OnClickListener와 setOnClickListener가 모두 Java로 구현이 되어있기에 가능하다. OnClickListener만 Java로 구현되었고 setOnClickListener는 Kotlin으로 구현되어 있다면 view.setOnClickListener(OnClickListener { //TODO }) 와 같은 형태로 구현되어진다. 안에 있는 OnClickListener를 밖으로 빼낼 수 없다. 만약 두 코드가 모두 Kotlin으로 구현되어진 상태라면 익명객체인 object를 이용해야 한다. 함수형 패러..
자바에서는 If(b == null) { ... } else { ... } 등으로 처리해야 하는 코드가 코틀린에서는 ?: 하나로 해결이 가능하다. 아래의 예제는 value의 결과값이 null일 경우 3을 대입해준다. 예시1) val testMap = mutableMapOf('a' to 1) val value = testMap.putIfAbsent('b', 2) ?: 3 // putIfAbsent는 'b'가 존재하지 않는 경우 null을 반환 println(value) // 출력값 3 예시2) getNewsFromUrl(newsUrl)?.let { mNewsList.add(it) } // News가 null이 아닌 경우 list에 추가해준다.