본문 바로가기
728x90

java 812

3장. 람다 표현식 동작 파라미터화를 이용하면 더 유연하고 재사용할 수 있는 코드를 만들 수 있다. 익명 클래스로 다양한 동작을 구현할 수 있지만 코드가 깔끔하지 않다. 깔끔하지 않다는 것은 실전에 적용하는 것을 막는 요소다. 그에 반해 람다는 익명 클래스처럼 이름이 없는 함수면서 메서드를 인수로 전달할 수 있고 코드 역시 깔끔하다. 이번 장에서는 람다에 대해 다룬다. 람다란 무엇인가? 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이다. 람다 표현식에는 이름은 없지만, 파라미터 리스트, 바디, 반환 형식, 예외 리스트를 가질 수 있다. 람다 특징은 다음과 같다. 1. 익명: 람다는 이름이 없다. 따라서 구현해야 할 코드에 대한 걱정이 준다. 2. 함수: 람다는 메서드처럼 특정 클래스에 종속되지 않기 때문에.. 2022. 2. 14.
1장 - 자바 8, 9, 10, 11: 무슨 일이 일어나고 있는가. 스트림 처리 스트림은 한 번에 한 개씩 만들어지는 연속적인 데이터 항목들의 모임이다. 자바 8에는 java.util.stream 패키지에 스트림 API가 추가되었다. 스트림 패키지에 정의된 Stream는 T 형식으로 구성된 일련의 항목을 의미한다. 스트림 API는 파이프라인을 만드는 데 필요한 메서드들을 제공한다. 스트림 API는 작업을 고수준으로 추상화해서 일련의 스트림으로 만들어 처리할 수 있다. 또 한 스트림 파이프라인을 이용해 입력 부분을 여려 CPU 코어에 쉽게 할당할 수 있다. 스레드라는 복잡한 작업을 사용하지 않고도 병렬성을 얻을 수 있다. 스트림 API는 연산의 동작을 파라미터화할 수 있는 코드를 전달한다는 사상에 기초한다. 동작 파라미터화(behavior parameterization)로.. 2022. 2. 12.
Date/Time java8에서 새로 나온 날짜와 시간을 나타내는 api이다. 기존에 사용했던 Date, Calendar, SimpleDateFormat은 여러 불편함이 존재한다. 예를 들어 이름이 명확하지 않다. Date의 경우 날짜 뿐만 아니라 time stamp도 나타낼 수 있다. 또 한 Date.getTIme()은 일상적으로 사용하는 시간이 아닌 1970년 1월 1일 0시 0분 0초를 기준으로 현재시간을 뺀 값을 밀리세컨드 단위로 보여준다. 또 한 객체가 mutable하기 때문에 Date.setTime()을 통해 시간을 바꿀 수 있다. 따라서 thread-safe하지 않다. GregorianCalendar의 경우 type-safe하지 않다는 문제가 발생한다. GregorianCalendar는 연도, 월, 날짜를 인.. 2021. 11. 22.
함수형 인터페이스와 람다 표현식 함수형 인터페이스와 람다 표현식은 자바에서 함수형 프로그래밍을 할 수 있게 해주는 초석이다. 하지만 이들은 반드시 함수형 프로그래밍 만을 위해서 사용하라는 법은 없다. 함수형 인터페이스 추상 메서드가 하나만 존재하는 것이 함수형 인터페이스 이다. 1 2 3 4 public interface RunSomething { void doIt(); } cs 여기서 추상 메서드는 abstract가 생략되 있으므로 반드시 구현채를 구현해야 한다. 또 한 함수형 인터페이스는 default method, static method를 사용할 수 있다. 함수형 인터페이스를 구현할 때는 자바가 제공하는 @FunctionalInterface annotation을 사용한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 1.. 2021. 11. 20.
728x90