인터페이스
-
람다와 스트림 - 컬렉션과 함수형 인터페이스백엔드/자바 2021. 9. 1. 19:38
JDK 1.8부터는 함수형 인터페이스가 추가됐고, 그와 더불어 컬렉션 프레임웍을 편하게 사용할 수 있도록 컬렉션의 인터페이스에 디폴트 메서드가 추가됐다. 그 중 일부는 함수형 인터페이스를 사용하는데 이번 파트에서 그러한 메서드들에 대해 설명한다. 인터페이스 메서드 설명 Collection boolean removeIf(Predicate filter) 조건에 맞는 요소 삭제 List void replaceAll(UnaryOperator operator) 모든 요소를 변환하여 대체 Iterable void forEach(Consumer action) 모든 요소에 작업 action을 수행 Map V compute(K key, BiFunction f) 지정된 키의 값에 작업 f를 수행 V computeIfAbs..
-
람다와 스트림 - 함수의 결합백엔드/자바 2021. 8. 25. 19:57
수학에서 두 개의 함수를 결합할 수 있는 것처럼 자바에선 두 람다식을 결합할 수 있도록 하고 있다. 그리고 당연히 미리 준비된 메서드만 가져다 쓰면 된다. andThen() 예를 들어 위와 같은 코드가 있다고 가정해보자. 참조변수 ft1은 10진수를 넣으면 2진수로 반환하는 람다식을 저장하고 있다. 반면 참조변수 ft2는 2진수를 넣으면 10진수로 반환하는 람다식을 저장하고 있다. 만약 이 두 개의 함수를 합치고 싶다면 어떻게 해야할까? 그럴땐 andThen을 쓰면 된다. 위 코드와 같이 두 개의 함수를 andThen()메서드로 합쳐주면 두 함수는 하나로 합성된다. 이때 데이터의 흐름은 "ft1 (10진수 -> 2진수) => ft2 (2진수 -> 10진수)"로 된다. 그래서 정수 10을 입력하면 정수 1..
-
람다와 스트림 - java.util.function - part2백엔드/자바 2021. 8. 25. 14:44
람다와 스트림 - java.util.function - part1 이전 람다 파트에선 람다란 무엇인지, 람다를 사용하기 위한 방법, 함수형 인터페이스 등에 대해서 배웠다. 다시 한번 간단하게 복습하면 다음과 같다. - 람다식은 익명 객체를 간략하게 만든 표 sgcomputer.tistory.com 이전 파트에선 함수형 인터페이스를 쉽게 사용할 수 있게 만든 패키지 java.util.function에 대해 알아봤다. 이번 파트에서는 추가적으로 유용하게 쓸 수 있는 함수형 인터페이스에 대해서 알아보자. 매개변수가 두 개인 함수형 인터페이스 함수형 인터페이스 메서드 설명 BiConsumer void accept ( T t, U u ) 두 개의 매개 변수만 있고, 반환값이 없음 BiPredica..
-
람다와 스트림 - java.util.function - part1백엔드/자바 2021. 8. 24. 16:16
이전 람다 파트에선 람다란 무엇인지, 람다의 사용법, 함수형 인터페이스 등에 대해서 배웠다. 다시 한번 간단하게 복습하면 다음과 같다. - 람다식은 익명 객체를 간략하게 만든 표현식이다. - 익명 객체를 사용하려면 함수형 인터페이스가 필요하다. - 함수형 인터페이스를 통해 익명 객체를 사용 할 수 있고, 이때 익명 객체를 람다로 표현이 가능하다. 이제 예제를 보며 함수형 인터페이스와 람다 사용하는 방법을 복습해보자. 만약 두 숫자를 비교하는 기능을 하는 익명 객체를 만들어 사용해보고 싶다면? - 우선 함수형 인터페이스를 작성한다. - 형식에 맞게 람다식을 작성하고 함수형 인터페이스의 참조 변수에 람다식을 저장한다. - 참조 변수이용해서 숫자를 대입한 뒤 실행하여 결과값을 확인한다. 사실 예제가 간단해서 ..
-
람다와 스트림 - 람다식의 활용백엔드/자바 2021. 8. 24. 15:21
람다와 스트림 - 함수형 인터페이스 람다와 익명 객체() 람다와 스트림 - 람다식의 정의 람다식(Lambda Expression)이란? 자바 관련 예제를 보다보면 위와 같은 식을 코드를 볼 수 있다. 메서드들을 체이닝으로 이어준 것인데, 그 중에서 sgcomputer.tistory.com 이전 파트에서 익명 객체를 어떤식으로 만드는지, 그리고 그렇게 만들어진 익명 객체를 어떻게 람다식으로 간략히 표현하는지 알아봤다. 이번 파트에는 람다식을 활용한 다양한 예시를 알아보도록 하자. sort()에서의 람다 사용 위와 같이 String을 요소로 가지는 리스트를 정렬한다고 가정해보자. 이 리스트를 정렬할 때 Collections.sort()를 사용하는데 매개변수로 Comparator를 전달해야 한다. 하지만 위에..
-
익명 클래스(anonymous class)백엔드/자바 2020. 8. 11. 01:01
익명 클래스란? 클래스의 선언과 객체 생성과 동시에 단 한번 사용할 수 있게 만든 클래스를 말한다. 그래서 단 한번만 사용되고 오직 하나의 객체만 생성가능한 일회용 클래스이다. 이름이 없어서 생성자를 가질 수 없고 단 하나의 클래스를 상속받거나 하나의 인터페이스만 구현 가능하다. 익명 클래스의 구조는 다음과 같다. 인터페이스 자료형 + 참조변수명 = new + 인터페이스 자료형 ( ) + { 인터페이스의 메서드 오버라이딩 } interface Anony{ // 'Anony' 인터페이스 선언 void test(); // 'test' 추상 메서드 선언 } class Normal_Class{ // 'Normal_Class' 일반 클래스 선언 public void test2(){}; // 'test2' 일반 메..
-
추상클래스, 인터페이스와 다형성백엔드/자바 2020. 8. 7. 04:27
다형성이란? 일반 클래스의 상속 관계처럼 다형성이란 '다형성이란 여러 형태를 가질 수 있는 성질'을 말한다. 일반 클래스들의 상속 과정의 다형성의 포인트는 다음과 같았다. ◎ "상속 관계에서 부모 클래스가 자식 클래스들을 대표 한다" 부모 클래스를 자료 타입으로 하는 참조 변수가 자손 클래스의 인스턴스를 가질 수 있다는 것이다. 추상 클래스, 인터페이스와 다형성 일반 클래스 상속과 다형성의 관계와 같이 추상클래스, 인터페이스도 그와 동일한 구조를 갖는다. 즉 추상클래스, 인터페이스를 상속한 자손 클래스의 인스턴스의 주소값을 추상클래스, 인터페이스를 자료형으로 하는 참조 변수가 참조할 수 있다는 것이다. interface Human{ // 인터페이스 'Human' 선언 String me(); // 반환값이..
-
인터페이스 (interface)백엔드/자바 2020. 8. 7. 03:38
인터페이스란? 인터페이스는 일종의 추상 클래스로서 일반적인 추상 클래스보다 추상화가 심하다. 추상 클래스는 추상 메서드 뿐 아니라 일반 메서드, 일반 멤버 변수를 가질 수 있다. 하지만 인터페이스는 추상 메서드와 상수만을 가질 수 있고 그 외 어떤 요소도 허용치 않는다. 사람의 얼굴로 치면 인터페이스는 뼈대, 추상 클래스는 피부, 일반 클래스는 눈코입이라고 할 수 있다. 그만큼 추상 클래스와 더불어 다른 클래스에 도움을 주는 목적으로 만들어진다. 인터페이스의 사용 이유 인터페이스의 사용 이유는 추상 클래스를 이용하는 이유와 동일하다. 추상클래스나 인터페이스나 모두 그 자체로는 특별한 기능을 하지 않는다. 하지만 한 가지 프로그램을 여러명이 짤 때 참고하고 쓸 수 있는 가이드의 역할을 한다. 그리고 인터페..