개발을 하다 보면 함수의 파라미터로 변수를 넘겨주어야 한다. 각 언어마다 변수를 넘겨주는 방법(Pass By Value, Pass By Reference)이 다른데, 이를 정확히 인지하지 못하면 예상치 못한 버그를 발생시킬 수 있다. 이번에는 Java가 어떠한 방식으로 파라미터를 전달하는지 살펴보도록 하자. 1. 문제 풀어보기 Pass By Value와 Pass By Reference에 대해 이야기하기 전에, 우리는 이들에 대해 얼마나 이해하고 있는지 확인하기 위해 아래의 간단한 시스템의 출력 결과를 예상해보도록 하자. 해당 유형의 문제는 실제 유명한 기업들에서 자주 출제되는 문제이기도 하다. [ 실행할 프로그램 ] class Dog { private String name; public Dog (Stri..
1. equals와 hashCode란? equals와 hashCode는 모든 Java 객체의 부모 객체인 Object 클래스에 정의되어 있다. 그렇기 때문에 Java의 모든 객체는 Object 클래스에 정의된 equals와 hashCode 함수를 상속받고 있다. [ equals()란? ] boolean equals(Object obj)로 정의된 equals 메소드는 기본적으로 2개의 객체가 동일한지 검사하기 위해 사용된다. equals가 구현된 방법은 2개의 객체가 참조하는 것이 동일한지를 확인하는 것이며, 이는 동일성(Identity)을 비교하는 것이다. 즉, 2개의 객체가 가리키는 곳이 동일한 메모리 주소일 경우에만 동일한 객체가 된다. public boolean equals(Object obj) {..

Java 언어를 이용해 개발을 하다 보면 기계적으로 작성해야 하는 코드들이 상당히 많다. 이번에는 기계적인 코드 작성을 자동화하여 코드 다이어트를 해주는 Java 필수 라이브러리 Lombok에 대해 알아보도록 하겠다. 1. Lombok의 필요성 [ 기존의 코드 작성 ] 예를 들어 우리가 경기도 지역화폐 가맹점에 대한 상점 목록을 반환해주는 SpringBoot 기반의 API 서버를 개발한다고 가정하자. 우리는 기존에 Java를 활용하여 프로젝트를 개발할 때 다양한 VO 클래스들을 생성하였고, 해당 예제의 경우 가게들의 정보를 저장하는 Store를 아래와 같이 만들어줄 수 있다. public class Store extends Common { private String companyName; // 상호명 p..

클린코드 책을 읽다보면 Enum 활용의 중요성에 대해 얘기하는 부분이 있습니다. 이번 내용으로는 Enum에 대해 알아보고 기존의 코드를 개선시켜보도록 하겠습니다. 아래의 내용들은 배달의 민족 기술 포스팅을 참고하여 작성하였습니다! 1. 기존의 코드 관리 방법 [ 기존의 코드 관리 방법 ] 일반적으로 프로그래밍을 할 때, Enum과 같이 열거형이 필요한 타입들의 경우 서버에서 데이터를 제공한다. 예를 들어 어떤 글의 진행상태를 나타내는 변수가 있다고 하자. 과거의 시스템과 같은 경우는 아래의 예제와 같이 상수와 관련된 코드들을 별도의 테이블로 만들어서 관리하고 있었다. @Entity @Table("codeVO") @Getter @NoArgsConstructor public class CodeVO exten..
클린코드 책을 읽다보면 Enum 활용의 중요성에 대해 얘기하는 부분이 있습니다. 이번 글에서는 Enum에 대해 알아보고 Enum을 활용하여 기존의 코드를 개선시켜보도록 하겠습니다. 1. Enum이란? [ Enum 이란? ] 일반적으로 상수를 정의할 때, public static final String 으로 상수를 정의한다. 하지만 이렇게 상수를 정의하면서 다양한 문제들이 발생하게 되었고, Java 1.5버전부터는 서로 연관된 상수들의 집합을 의미하는 열겨형 클래스 Enum을 도입하게 되었다. 어떤 일의 처리가 진행중인지 완료상태인지를 나타내는 Status와 관련된 Enum은 아래와 같이 사용될 수 있다. package EnumExample; public class EasyEnumExample { // E..