분류 전체보기
-
[Java] 람다식 - 메소드 참조CSE/Java 2015. 9. 23. 14:50
람다식은 여러 절로 구성되어 있습니다. Intro.람다식 기본 문법 & 타겟 타입과 함수적 인터페이스클래스 멤버와 로컬 변수 사용표준 API의 함수적 인터페이스1표준 API의 함수적 인터페이스2메소드참조 메소드 참조 메소드 참조(Method Reference)는 말 그대로 메소드를 참조해서 매개 변수의 정보 및 리턴 타입을 알아내어, 람다식에서 불필요한 매개 변수를 제거하는 것이 목적입니다. 람다식은 종종 기존 메소드를 단순히 호출하는 경우가 많습니다. 예를 들어 두 개의 값을 받아 큰 수를 리턴하는 Math 클래스의 max() 정적 메소드를 호출하는 람다식은 다음과 같습니다. 12(left, right) -> Math.max(left, right); Colored by Color Scriptercs 람..
-
[Java] 람다식 - 표준 API의 함수적 인터페이스2CSE/Java 2015. 9. 23. 14:03
람다식은 여러 절로 구성되어 있습니다. Intro.람다식 기본 문법 & 타겟 타입과 함수적 인터페이스클래스 멤버와 로컬 변수 사용표준 API의 함수적 인터페이스1표준 API의 함수적 인터페이스2메소드참조 andThen()과 compose() 디폴트 메소드 디폴트 및 정적 메소드는 추상 메소드가 아니기 때문에 함수적 인터페이스에 선언되어도 여전히 함수적 인터페이스의 성질을 잃지 않습니다. 여기서 함수적 인터페이스 성질이란 하나의 추상 메소드를 가지고 있고 람다식으로 익명 구현 객체를 생성할 수 있는 것을 말합니다. java.util.function 패키지의 함수적 인터페이스는 하나 이상의 디폴트 및 정적 메소드를 가지고 있습니다. Comsumer, Function, Operator 종류의 함수적 인터페이스..
-
[Java] 람다식 - 표준 API의 함수적 인터페이스1CSE/Java 2015. 9. 20. 16:13
람다식은 여러 절로 구성되어 있습니다. Intro.람다식 기본 문법 & 타겟 타입과 함수적 인터페이스클래스 멤버와 로컬 변수 사용표준 API의 함수적 인터페이스1표준 API의 함수적 인터페이스2메소드참조 표준 API의 함수적 인터페이스 자바에서 제공되는 표준 API에서 한 개의 추상 메소드를 가지는 인터페이스들은 모두 람다식을 이용해서 익명 구현 객체로 표현이 가능합니다. 예를 들어 스레드의 작업을 정의하는 Runnable 인터페이스는 매개 변수와 리턴값이 없는 run() 메소드만 존재하기 때문에 다음과 같이 람다식을 이용해서 Runnable 인스턴스를 생성시킬 수 있습니다. * RunnableExam.java 123456789101112131415161718 package lambda; public c..
-
[Java] 람다식 - 클래스 멤버와 로컬 변수 사용CSE/Java 2015. 9. 20. 14:43
람다식은 여러 절로 구성되어 있습니다. Intro.람다식 기본 문법 & 타겟 타입과 함수적 인터페이스클래스 멤버와 로컬 변수 사용표준 API의 함수적 인터페이스1표준 API의 함수적 인터페이스2메소드참조 클래스 멤버와 로컬 변수 사용 람다식의 실행 블록에는 클래스의 멤버(필드와 메소드) 및 로컬 변수를 사용할 수 있습니다. 클래스의 멤버는 제약 사항 없이 사용 가능하지만, 로컬 변수는 제약 사항이 따릅니다. 클래스의 멤버 사용 람다식 실행 블록에는 클래스의 멤버인 필드와 메소드를 제약 사항 없이 사용할 수 있습니다. 하지만 this 키워드를 사용할 때에는 주의가 필요합니다. 일반적으로 익명 객체 내부에서 this는 익명 객체의 참조이지만, 람다식에서 this는 내부적으로 생성되는 익명 객체의 참조가 아니..
-
[Java] 람다식 - 기본 문법, 타겟 타입과 함수적 인터페이스CSE/Java 2015. 9. 20. 14:10
람다식은 여러 절로 구성되어 있습니다. Intro.람다식 기본 문법 & 타겟 타입과 함수적 인터페이스클래스 멤버와 로컬 변수 사용표준 API의 함수적 인터페이스1표준 API의 함수적 인터페이스2메소드참조 람다식 기본 문법 함수적 스타일의 람다식을 작성하는 방법은 다음과 같습니다. (타입 매개변수, ...) -> { 실행문; ... } (타입 매개변수, ...)는 오른쪽 중괄호 { } 블록을 실행하기 위해 필요한 값을 제공하는 역할을 합니다. 매개 변수의 이름은 개발자가 자유롭게 지정할 수 있습니다. -> 기호는 매개 변수를 이용해서 중괄호 { }를 실행한다는 뜻으로 해석하면 됩니다. 예를 들어 int 매개 변수 a 의 값을 콘솔에 출력하기 위해 다음과 같이 람다식을 작성할 수 있습니다. 12(int a)..
-
[Java] 람다식 - IntroCSE/Java 2015. 9. 20. 13:23
람다식은 여러 절로 구성되어 있습니다. Intro.람다식 기본 문법 & 타겟 타입과 함수적 인터페이스클래스 멤버와 로컬 변수 사용표준 API의 함수적 인터페이스1표준 API의 함수적 인터페이스2메소드참조 람다식 자바는 함수적 프로그래밍을 위해 자바 8부터 람다식(Lambda Expressions)을 지원하면서 기존의 코드 패턴과 많이 달라졌습니다. 람다식은 익명 함수(anonymous function)를 생성하기 위한 식으로 객체 지향 언어보다는 함수 지향 언어에 가깝습니다. 객체 지향 프로그래밍에 익숙한 개발자들은 다소 혼란스러울 수 있지만, 자바에서 람다식을 수용한 이유는 자바 코드가 매우 간결해지고, 컬렉션의 요소를 필터링하거나 매핑해서 원하는 결과를 쉽게 집계할 수 있기 때문입니다. 람다식의 형태..
-
[Java] 제네릭(generic) - 제네릭 타입의 상속과 구현CSE/Java 2015. 9. 20. 11:47
제네릭은 여러 절로 구성되어 있습니다. Intro제네릭 타입멀티 타입 파라미터제네릭 메소드제한된 타입 파라미터 & 와일드카드 타입제네릭 타입의 상속과 구현 제네릭 타입의 상속과 구현 제네릭 타입도 다른 타입과 마찬가지로 부모 클래스가 될 수 있습니다. 다음은 Product 제네릭 타입을 상속해서 ChildProduct 타입을 정의합니다. 12public class ChildProduct extends Product { ... } Colored by Color Scriptercs 자식 제네릭 타입은 추가적으로 타입 파라미터를 가질 수 있습니다. 다음은 세 가지 타입 파라미터를 가진 자식 제네릭 타입을 선언한 것입니다. 12public class ChildProduct extends Product { .....
-
[Java] 제네릭(generic) - 제한된 타입 파라미터, 와일드카드 타입CSE/Java 2015. 9. 20. 11:34
제네릭은 여러 절로 구성되어 있습니다. Intro 제네릭 타입 멀티 타입 파라미터 제네릭 메소드 제한된 타입 파라미터 & 와일드카드 타입 제네릭 타입의 상속과 구현 제한된 타입 파라미터() 타입 파라미터에 지정되는 구체적인 타입을 제한할 필요가 종종 있습니다. 예를 들어 숫자를 연산하는 제네릭 메소드는 매개값으로 Number 타입 또는 하위 클래스 타입(Byte, Short, Integer, Long, Double)의 인스턴스만 가져야 합니다. 이것이 제한된 타입 파라미터(bounded type parameter)가 필요한 이유입니다. 제한된 타입 파라미터를 선언하려면 타입 파라미터 뒤에 extends 키워드를 붙이고 상위 타입을 명시하면 됩니다. 상위 타입은 클래스뿐만 아니라 인터페이스도 가능합니다. ..