목록Language (49)
devseop08 님의 블로그
코드 가독성을 살려주는 코틀린 핵심 기능 : 널이 될 수 있는 타입 지원7.1 NullpointerException을 피하고 값이 없는 경우 처리: 널 가능성코틀린을 포함한 최신 언어에서 null에 대한 접근 방법은 가능한 이 문제를 실행 시점에서 컴파일 시점으로 옮기는 것이다.널이 될 수 있는지 여부를 타입 시스템에 추가함 => 여러 가지 오류를 컴파일 시 미리 감지코틀린에서 null이 될 수 있는 값을 어떻게 표기하고 코틀린이 제공하는 도구가 그런 null이 될 수 있는 값을 어떻게 처리하는지 살펴보자널이 될 수 있는 타입 측면에서 코틀린과 자바 코드를 어떻게 함께 사용할 수 있는지 살펴보자7.2 널이 될 수 있는 타입으로 널이 될 수 있는 변수 명시코틀린과 자바의 첫 번째이자 가장 중요한 차이는 코..
코틀린의 클래스와 인터페이스는 자바 생성자와는 다르다.(ex. 인터페이스에 프로퍼티 선언이 들어갈 수 있다.)자바와 달리 코틀린 선언은 기본적으로 public(가시성 변경자)이며 final(접근 변경자)이다.가시성 변경자는 외부 접근에 관한 기준, 접근 변경자는 상속에 관한 기준내포 클래스는 기본적으로 내부 클래스가 아니다 => 코틀린 내포 클래스에는 외부 클래스에 대한 암시적 참조가 없다.생성자의 경우 짧은 주 생성자 구문으로도 거의 모든 경우를 잘 처리할 수 있지만 복잡한 초기화 로직을 수행하는 경우를 대비한 완전한 문법도 있다.프로퍼티도 마찬가지로 간결한 프로퍼티 구문으로도 충분히 제 몫을 하지만 필요하면 접근자로 직접 구현할 수 있다.클래스를 data 클래스로 선언하면 컴파일러가 일부 표준 메서드..
3장에서는 코틀린이 함수 선언과 호출을 코틀린이 어떻게 개선했는지 살펴본다.추가로 확장 함수와 프로퍼티를 사용해 혼합 언어 프로젝트에서 코틀린의 이점을 모두 살릴 수 있는 방법을 살펴본다.3.1 코틀린에서 컬렉션 만들기코틀린에서 컬렉션 만들기val set = setOf(1, 7, 53)val list = listOf(1,7, 53)val map = (1 to "one", 7 to "seven", 53 to "fifty-three")코틀린은 표준 자바 컬렉션 클래스를 사용한다.fun main(){ val set = setOf(1, 7, 53) val list = listOf(1,7, 53) val map = (1 to "one", 7 to "seven", 53 to "fifty-three"..
2.1 기본 요소 : 함수와 변수코틀린이 어떻게 변경 가능한 데이터보다 변경할 수 없는 불변 데이터 사용을 권장하는지와 왜 불변 데이터가 더 좋은 것인지 살펴본다.2.1.1 첫 번째 코틀린 프로그램 작성 : Hello, World!fun main(){ println("Hello, world!") }함수 선언 시, fun 키워드를 선언한다.함수를 모든 코틀린 파일의 최상위 수준에 정의할 수 있으므로 클래스 안에 함수를 넣어야 할 필요는 없다.최상위에 있는 main 함수를 어플리케이션의 진입점으로 지정할 수 있다.코틀린 표준 라이브러리는 수많은 표준 자바 라이브러리 함수에 대해 더 간결한 구문을 사용할 수 있게 해주는 래퍼를 제공한다.println도 래퍼 중 하나이다.2.1.2 파라미터와 반환값이 있는..
스트림 최종 연산 reduce가 그랬던 것처럼 collect 역시 다양한 요소 누적 방식을 인수로 받아서 스트림을 최종 결과로 도출하는 리듀싱 연산을 수행할 수 있다.다양한 요소 누적 방식은 Collector 인터페이스에 정의되어 있다.6.1 컬렉터란 무엇인가?Collectors 클래스의 toList 메서드는 스트림의 각 요소를 리스트로 만드는 작업을 수행하는 Collector 인터페이스의 구현을 반환한다.collect 메서드의 인수로 주어진 Collector 인터페이스 구현은 스트림의 요소를 어떤 식으로 도출할 지 결정한다.Collectors 클래스의 groupingBy 메서드는 각 키 버킷 그리고 각 키 버킷에 대응하는 요소 리스트를 값으로 포함하는 맵을 만드는 작업을 수행하는 Collector 인터..
5.1 필터링5.1.1 프레디케이트로 필터링스트림 인터페이스는 filter 메서드를 지원한다.filter 메서드는 프레디케이트를 인수로 받아서 프레디케이트와 일치하는 모든 요소를 포함하는 스트림을 반환한다.List vegetarianMenu = menu.stream() .filter(Dish::isVegitarian) .collect(toList());5.1.2 고유 요소 필터링스트림은 고유 요소로 이루어진 스트림을 반환하는 distinct 메서드도 지원한다.고유 여부는 스트림에서 만든 hashCode, equals로 결정된다.List numbers = Array.asList(1, 2, 1, 3..
4.1 스트림이란 무엇인가?스트림은 자바 8 API에 새로 추가된 기능이다.스트림을 이용하면 선언형으로 컬렉션 데이터를 처리할 수 있다, 즉 데이터를 처리하는 임시 구현 코드 대신 질의로 표현할 수 있다는 것이다.스트림을 이용하면 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다.다음 예제는 저칼로리의 요리명을 반환하고 칼로리를 기준으로 요리를 정렬하는 자바 7 코드다.List lowCaloricDishes = new ArrayList();for (Dish dish : menu){ if(dish.getCalories() (){ public int compare(Dish dish, Dish dish2){ return Integer.compare(dish1, ..
1.1 자바 역사의 흐름자바 8 등장 이전까진, 멀티 코어를 사용하는 병렬 실행 환경을 잘 활용하지 못했다.하나의 코어 외의 나머지 코어를 활용하려면 쓰레드를 사용해야 한다고 했지만, 쓰레드를 사용하면 관리가 어렵고 많은 문제를 야기했다.자바는 이러한 병렬 실행 환경을 쉽게 관리하고 에러가 덜 발생하는 방향으로 진화하려 노력했다.자바 8에서는 병렬 실행을 새롭고 단순한 방식으로 접근할 수 있는 방법을 제공한다.자바 9에서는 리액티브 프로그래밍이라는 병렬 실행 기법을 지원한다.RxJava(리액티브 스트림 툴킷)를 표준적인 방식으로 지원한다.자바 8은 자바 역사의 흐름에 있어서, 멀티코어 프로세서의 쉽고 효과적인 활용과 간결한 코드의 작성이라는 요구 사항을 기반으로 한다.이러한 요구 사항을 충족하고자 자바 ..