본문 바로가기

JAVA55

[JAVA] 제네릭 타입 파라미터 범위를 한정(제한) 제네틱 타입 파라미터의 제한하기제한된 타입 매개변수(Bounded Type Parameter)제네릭에 타입을 지정함으로써, 컴파일 타임에 오류를 발견할 수 있어 안정성이 확보되지만어떤 타입도 사용할 수 있기 때문에 자유로움이 때문에, 클리스의 제네릭 타입 파라미터로 원하는 타입만 들어올 수 있도록 제한하는 방법을 만들었는데, 이것이 제한된 타입 매개변수(Bounded Type Parameter) 타입 파라미터의 범위를 한정하는 키워드타입 파라미터의 상한을 제한 : extends타입 파라미터의 하한을 제한 : super   타입 파라미터의 상한을 제한하기(extends)사용 문법어떤 타입이라도 들어올 수 있는 일반적인 제네릭 타입인 T에extends 키워드를 사용하여, 타입 파라미터의 범위를 제한함exte.. 2024. 5. 3.
[JAVA] 람다식의 메서드 참조 람다식의 메서드 참조메서드 참조란?람다 표현식이 단 하나의 메서드만을 호출하는 경우에매개변수, 화살표를 제거하고, 클래스가 메서드를 참조하는 . 기호를 :: 기호로 변환하여 사용 사용할 수 있도록 함실행하려는 메서드를 참조하여 매개변수의 정보와 리턴 타입을 알아내람다 표현식에서 불필요한 선언 부분(매개변수, 화살표 등)을 생략이를 통해서 람다식을 더 간단히 만들 수 있음 문법매개변수, 화살표를 제거하고, :: 기호를 사용하여 표현클래스이름 :: 메서드이름참조변수 :: 메서드 이름   메서드 참조 종류어떠한 메서드를 참조하느냐에 따라, 종류가 나뉨종류람다 표현식메서드 참조인스턴스 메서드 참조(x) -> 참조변수.method(x)참조변수명 :: method정적 메서드 참조(x) -> 클래스명.method(x.. 2024. 5. 2.
[JAVA] 람다 표현식을 사용하는 함수형 인터페이스 람다 표현식 사용하기 : 함수형 인터페이스아무런 클래스의 메서드나 추상 클래스의 메서드를 람다 표현식으로 줄일 수 있는 것이 아니고, 함수형 인터페이스만 람다식으로 표현이 가능함[ 함수형 인터페이스 ]- 1개의 추상메서드를 가진 인터페이스- 인터페이스에 정의된 하나의 추상 메서드는, 함수형 인터페이스의 구현체인 람다 표현식을 실행시키는 메서드- 즉, 람다식으로 표현이 가능한 인터페이스를 가리켜서 함수형 인터페이스  함수형 인터페이스개념함수형 인터페이스는 딱 1개의 추상 메서드만 선언되어 있는 인터페이스람다식은 함수형 인터페이스 안에 정의된 1개의 추상 메서드의 구현 부분을 짧게 표현한 것즉, 람다식으로 구현하는 메서드는 인터페이스의 추상메서드여야 함 [ 함수형 인터페이스 ]// 함수형 인터페이스 : 추상.. 2024. 5. 2.
[JAVA] Optional의 개념과 사용법, 주의할 점 Optionaljava.util.Optional 클래스 optional이란?T 타입의 객체를 감싸주는 Wrapper 클래스T 타입의 참조 변수에 모든 타입의 객체를 저장할 수 있고복잡한 조건문 없이도 null값으로 인해 발생하는 예외를 처리할 수 있게 됨//String 타입의 참조변수(opt)에 문자열 객체 저장Optional opt = Optional.of("ABC")존재할 수도 있고, 존재하지 않을 수도 있는 객체, 즉 null이 될 수도 있는 객체를 감싸주는 Wrapper 클래스따라서 Optional 객체를 사용하면, 예상하지 못한 NPE(NullPointerException) 예외에 대해 간단히 회피할 수 있음즉, Optional 타입의 변수에 값을 저장하기 때문에,값이 null이더라도 바로 NP.. 2024. 5. 1.
[JAVA] 스트림이 동작할 때(생성, 중간 연산, 최종 연산) 사용하는 메서드 스트림이 동작할 때 사용하는 메서드 1. Stream 생성하기1) 배열 스트림 생성 : Arrays.stream()String [] strArr = {"A", "B", "C"};// 배열 스트림 생성Stream stream = Arrays.stream(strArr); 2) 컬랙션 스트림 생성 : .stream()List list = Arrays.asList("A", "B", "C");// 컬랙션 스트림 생성Stream stream = list.stream(); 3) 기본형 타입의 스트림 생성 range(a, b) : a부터 (b-1)까지의 범위IntStream stream = IntStream.range(1,7); // [1,2,3,4,5,6] rangeClosed(a, b) : a부터 (b)까지의 범.. 2024. 5. 1.
[JAVA] 스트림 API(특징, 스트림의 동작 흐름, 컬랙션과의 차이) Stream API(스트림 API)Stream API가 나오게 된 배경자바에서는 많은 양의 데이터를 저장하기 위하여 배열이나 컬랙션(Collection)을 사용하는데이렇게 저장된 데이터에 접근하기 위하여 반복문이나 반복자(iterator)를 사용하여 매번 새로운 코드를 작성해야함하지만 이렇게 작성된 코드는 길고 가독성이 떨어지며, 코드의 재사용이 거의 불가능함즉, 정형화된 처리 패턴을 가지지 못하여 데이터 종류에 따라 다른 방법으로 데이터를 처리해야 했음이러한 문제를 해결하기 위해 JDK8부터 Stream API을 도입함Stream API는 데이터를 추상화하여 다루므로, 다양한 방식으로 저장된 데이터를 조회하고 사용하기 위한 공통적인 방법을 제공함따라서, Stream API를 이용하면, 배열이나 컬랙션뿐.. 2024. 5. 1.