Java 에서 Static 키워드를 사용한다는 것은 메모리에 한 번 할당되어 프로그램이 종료될 때 해제되는 것을 의미한다. 이를 정확히 이해하기 위해서는 메모리 영역에 대한 이해가 필요한데, 일반적으로 우리가 만든 Class 는 Static 영역에 생성되고, new 연산을 통해 생성한 객체는 Heap 영역에 생성된다. 객체의 생성시에 할당된 Heap 영역의 메모리는 Garbage Collector 를 통해 수시로 관리를 받는다. 하지만 Static 키워드를 통해 Static 영역에 할당된 메모리는 모든 객체가 공유하는 메모리라는 장점을 지니지만, Garbage Collector 의 관리 영역 밖에 존재하므로 Static 을 자주 사용하면 프로그램의 종료시까지 메모리가 할당된 채로 존재하므로 자주 사용하게..
enum 클래스는 아래와 같은 방법으로 밖에 사용해 본 적이 없었다. public enum GreengrassLoggerLevel { DEBUG, INFO, WARN, ERROR, FATAL, UNKNOWN_TO_SDK_VERSION; } 이번에 그린그래스 커넥터를 개발하면서 enum 클래스의 또다른 사용법을 알게 됐다. 커넥터 request model 에는 parameters 라는 Map 형태의 객체가 포함되는데 어떤 커넥터를 사용할건지에 따라 connectorName, connectorArn 이 다르고, 버전에 따라 또 runtime, GGCVersion 이 다르다. 그리하여 커넥터타입 enum 클래스를 생성해준 후, public enum GreengrassConnectorType { SNS("SNS..
Builder 패턴이란, 객체를 생성할 때 사용하는 패턴을 의미한다. Person person = Person.build() .name("Jane") .age(30) .build(); 객체 생성 패턴 3가지 점층적 생성자 패턴 public class Person { private final String name; //필수 인자 private final String nation; //선택적 인자 private final String hobby; //선택적 인자 /** 필수 생성자 **/ public Person(String name) { this(name, "국가 비공개", "취미 비공개"); } /** 1개의 선택적 인자를 받는 생성자 **/ public Person(String name, String ..
외부에 있는 json 파일을 읽어서 특정 위치의 특정 값만 바꾸어 값을 넘겨주는 작업이 필요해짐에 따라 아래 내용을 수행했다. 먼저, FileUtils 자바 파일을 생성하여 파일을 읽어오거나 삭제할 수 있는 메소드를 작성한다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; i..