Java

    JAVA POI 라이브러리에 Reflection을 더해보자!

    최근 사내 프로젝트 중 특정 데이터를 엑셀 파일로 받는 기능을 구현해야 했습니다. Java POI 라이브러리에서 지원해주고 있는 기능인데 해당 라이브러리에서 지원하는 기능을 그대로 사용하면 중복된 코드들이 많이 발생할 수 있어 생산성이 다소 떨어질 수 있다는 생각을 했습니다. 방법을 찾던 중 여기서 Java Reflection 을 사용하여 해당 문제를 해결하는 글을 읽어보았는데, 평소에 Reflection 기능의 구현에 대해 궁금함도 있었고, 위에서 언급한 문제도 해결하고자 포스팅하게 되었습니다. 위 블로그의 코드를 분석해본 글이라 코드를 많이 참고하여 글을 작성하였습니다. Reflection 코드에 집중하고 싶어 위 블로그에서의 다수의 추상화 및 디자인 패턴을 생략하였습니다. 기존 POI 라이브러리를 ..

    Enum 에 대해 알아보자!

    이번 포스팅에서는 열거형 상수인 Enum 이 필요한 이유에 대해 자세히 알아보고자 합니다. 먼저 상수에 대해 간단히 짚고 넘어가자면, 상수는 변하지 않는 값입니다. int x = 1; //좌항 변수, 우항 상수 1 = 2; // 1은 2가 될 수 없다. 주석 이러한 상수의 특성과 switch 문을 사용하여 과일의 칼로리 값을 알아내는 코드는 아래와 같습니다. public class ConstantDemo { public static void main(String[] args) { /* * 1. 사과 * 2. 복숭아 * 3. 바나나 */ int type = 1; switch(type){ case 1: System.out.println(57+" kcal"); break; case 2: System.out.p..

    Java 직렬화(Serialization)에 대해 알아보자!

    Java 직렬화(Serialization) 란? Java 직렬화에 앞서, 데이터 직렬화에 대해 먼저 말해보자면, 소프트웨어 개발에서의 데이터 직렬화란 메모리를 디스크에 저장하거나 네트워크 통신에 사용하기 위한 형식으로 변환하는 것이다. 그렇다면 자바 직렬화는 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터를 변환하는 기술과 바이트로 변환된 데이터를 다시 객체로 변환하는 기술(역직렬화)을 아울러 말할 수 있다. 직렬화(Serialization)를 하는 이유는 뭘까? 데이터를 그냥 사용하지 않고 직렬화해서 사용하는 이유는 무엇일까? 개발언어에서 사용하는 메모리 구조는 크게 값 형식 데이터(Value Type)과 참조 형식 데이터(R..

    Java Stream API를 사용해보자!

    Java Stream API의 주요 기능에 대한 설명과 사용법에 관해 작성한 글입니다. Java Stream Java Stream API는 Java8 부터 등장하여 사용 방법이 다른 Collection Framework 들을 표준화하여 다루는 것을 가능하게 해 주었다. 우리는 데이터 소스를 추상화하여 데이터 소스(List, Map, Set, 배열 등등)가 무엇이든 간에 같은 방식으로 다룰 수 있게 되었고, 이는 코드의 재사용성을 높이는 결과를 가져오게 되었다. // 기존 int lotto[] = new int [6]; for(int i=0; i System.out.println(i + " ,")); // 최종 연산 작업을 내부 반복으로 처리한다. Stream을 이용하면 코드가 간결해지는 이유 중 하나는 ..