본문 바로가기

java13

JAVA 8 함수형 인터페이스 함수형 인터페이스(Functional interface)는 1개의 추상 메서드를 갖고 있는 인터페이스입니다. public interface FunctionalInterface { public abstract void printText(String text); } 자바의 람다식은 함수형 인터페이스로 접근이 되기 때문에 함수형 인터페이스를 사용합니다. 람다함수 : 람다 함수는 프로그래밍 언어에서 사용되는 개념으로 익명 함수(Anonymous functions)를 지칭하는 용어입니다. 현재 사용되고 있는 람다의 근간은 수학과 기초 컴퓨터과학 분야에서의 람다 대수이다. 람다 대수는 간단히 말하자면 수학에서 사용하는 함수를 보다 단순하게 표현하는 방법입니다. 아래 코드에서 변수 func는 람다식으로 생성한 객체를.. 2022. 11. 12.
열거형(enum) class Direction { static final Direction EAST = new Direction("EAST"); static final Direction SOUTH = new Direction("SOUTH"); static final Direction WEST = new Direction("WEST"); static final Direction NORTH = new Direction("NORTH"); private String name; private Direction(String name){ this.name = name; } } 열거형은 JDK1.5부터 새로 추가되었습니다. JAVA의 열거형은 C언어의 열거형보다 향상되었고 타입까지 관리하기 때문에 논리적인 오류를 줄일 수 있습니다. c.. 2022. 10. 29.
JAVA8 STREAM(1) 자바 8 에서 추가한 Stream은 람다를 활용할 수 있는 기술입니다. 자바 8 이전에는 배열 또는 컬렉션을 다루는 방법은 for, foreach를 사용했습니다. 로직이 복잡해질수록 코드의 양이 많아져 여러 로직이 섞이게 되고, 메서드를 나눌경우 루프를 여러번 도는 현상도 발생합니다. stream은 데이터의 흐름입니다. 배열 또는 컬렉션 인스턴스에 함수를 조합해서 원하는 결과를 필터링하고 가공된 결과를얻을 수 있습니다. 또한 람다를 활용해서 코드의 양을 줄이고 간결하게 표현할 수 있습니다. 배열과 컬렉션을 함수형으로 처리할 수 있습니다. Stream은 생성하기 (인스턴스 생성) 가공하기 (필터링, 맵핑) 결과 로 나눌 수 있습니다. 보통 배열과 컬렉션을 이용해서 Stream을 생성하지만 다양한 방법으로 .. 2022. 10. 15.
제네릭(generic) 제네릭이란 무엇일까? 제네릭(Generic)은 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것을 의미합니다. 특정(Specific) 타입을 미리 지정해주는 것이 아닌 필요에 의해 지정할 수 있도록 하는 일반(Generic) 타입입니다. Generic(제네릭)의 장점 제네릭을 사용하면 잘못된 타입이 들어올 수 있는 것을 컴파일 단계에서 방지할 수 있습니다. 클래스 외부에서 타입을 지정해주기 때문에 따로 타입을 체크하고 변환해줄 필요가 없습니다. 비슷한 기능을 지원하는 경우 코드의 재사용성이 높아집니다. Generic(제네릭) 사용방법 보통은 아래 표의 타입들이 많이 사용됩니다. 타입 설명 Type Element Key Value Number Generic(제네릭)의 사용 1. 클래스.. 2022. 9. 24.
JAVA8 Optional 사용법 java8 버전부터 Optional 클래스가 지원되기 시작했습니다. Optional 내용을 알아볼까요? Java NPE 예방 자바 프로그램을 작성하다보면 null처리를 해야 할 경우가 많습니다. null 값을 제대로 처리하지 않으면 NullPointerException을 자주 만나게 됩니다. 안정적인 실행을 위해 NPE이 발생하지 않도록 중간중간 null 체크를 해줘야 하는데 if문이 반복적으로 들어가기 때문에 코드가 더러워집니다. 아래와 같은 상황에서 NPE가 발생합니다. List strs = null; strs.get(0).toString(); 위 코드를 아래와 같이 수정해야 합니다. List strs = null; strs.get(0).toString(); if(strs!=null) { //다음 로.. 2022. 9. 17.
제어자(modifier) 제어자(modifier) 제어자는 클래스, 변수, 메서드의 선언부와 함께 사용되며 부가적인 의미를 부여한다. 제어자의 종류는 접근 제어자와 그 외의 제어자로 나눌 수 있습니다. 접근 제어자(access modifier) 접근 제어자의 멤버 또는 클래스에 사용되어, 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제어하는 역할을 합니다. private : 같은 클래스 내에서만 접근이 가능 default : 같은 패키지 내에서만 접근이 가능 protected : 같은 패키지 내, 그리고 다른 패키지의 자손 클래스에서 접근이 가능 public : 접근 제한이 없다 대상 사용 가능한 접근 제어자 클래스 public, default 메서드 public, protected, default, private 멤.. 2022. 9. 10.