본문 바로가기

object4

[Java] Optional 바르게 사용하기 🙋 들어가며 자바 기반의 백엔드 개발자가 Optional을 제대로 접하는 순간은 JPA의 query method를 사용할 때라고 생각합니다. Optional이 사용하기 편한 객체이지만 사용할 때 주의점을 요합니다. 이 글에서는 Optional에 대한 저의 고찰과 올바르게 사용하는 방법에 대해 이야기해 보겠습니다. 🧐 Optional의 목적 모든 사물들은 각자에게 주어진 알맞은 쓰임이 존재합니다. 예를 들어서, 책은 읽기 위해서 존재합니다. 라면 받침으로 쓰는 것은 본디 목적을 잃는 것입니다. (물론 라면 받침으로 씁니다) 그렇다면 Optional의 쓰임은 무엇일까요? 자바 설계자가 언급한 의도를 가져왔습니다. Our intention was to provide a limited mechanism for .. 2023. 6. 22.
[이펙티브 자바] 아이템 13 : clone 재정의는 주의해서 진행하라 🎯 학습 목표 Cloneable 인터페이스란? 재정의 시 문제점 변환 생성자, 변환 팩토리 📌 clone 재정의 시 주의하기! 이번 아이템은 clone()을 사용할 때 주의점을 다룬다. 그러기에 앞서 Cloneable이 뭔지 알아보자! 💡 Cloneable 인터페이스 Cloneable Interface란? 일종의 maker interface로 'cloen에 의해 복제할 수 있다'를 표시하는 인터페이스이다. Java에서는 인스턴스의 복제를 위해 clone() 메서드가 구현되어 있다. 신기하게도 이 메서드는 Cloneable 내부에 구현되어 있을 거란 예상을 깨고 java.lang.Object 클래스에 protected 접근 지정자로 구현되어 있다. 내부에는 구현해야 할 메서드가 하나도 없다! 사용법과 주의.. 2023. 2. 1.
[이펙티브 자바] 아이템 1 : 생성자 대신 정적 팩토리 메서드를 고려하라 ✍️ 학습 목표 객체 생성하기 정적 팩토리 메서드의 장점 정적 팩토리 메서드의 단점 📌 객체 생성하기 객체를 생성하는 가장 흔한 방법은 public 생성자를 사용하는 것이다. 정적 팩토리 메서드를 사용해서도 객체를 생성할 수 있다. 차이는 다음과 같다. 🧐 public 생성자 class Pokemon { private int attack, defense, hp; public Pokemon(int attack, int defense, int hp) { this.attack = attack; this.defense = defense; this.hp = hp; } } public class Item1 { public static void main(String[] args) { Pokemon 피카츄 = new .. 2022. 12. 7.
[Java] Java의 상속 ✍️ 학습할 것 Java의 상속 super 메서드 오버라이딩 다이나믹 메서드 디스패치 (Dynamic Method Dispatch) 추상 클래스 final Object 클래스 📌 Java의 상속 자바의 상속을 이해하기 이전에 우선 객체 지향 프로그래밍의 가장 큰 특징인 상속에 대해서 이해해야 한다. 먼저 상속에 대해서 이해해보자. ✔️ 상속이란? 기존의 클래스를 이용해서 새로운 클래스를 만들어내는 것이다. 기존에 정의되어있던 클래스의 모든 필드와 메서드를 물려받아 코드의 재사용성을 높여준다. 기존의 클래스를 부모 클래스, 상위 클래스 등으로 부르고, 상속받은 클래스는 자식 클래스, 서브 클래스 등으로 부른다. ✔️ 자바에서 상속 extends 뒤에 부모 클래스를 붙여서 사용한다. 모든 클래스의 부모 클래.. 2022. 8. 25.