스프링 부트를 공부하면서, ResponseEntity 와 같은 클래스들은 내부가 어떻게 생겼는지 궁금하여 클래스를 뜯어보는 일이 자주 있게 되었고, 그때 마다 만났던 문법인 자바의 제네릭 와일드 카드라는 문법에 대해서 정리해보려고 한다. 자바의 와일드 카드 문법에 대해서 알아보기전에, 공변, 불공변 개념에 대해서 알고 가야한다.● 공변 : S 가 T 의 하위 타입이면, - S[] 는 T[] 의 하위 타입이다.- List 는 List 의 하위 타입이다.● 반공변 (공변의 반대) : S 가 T의 하위 타입이면, - T[] 는 S[] 의 하위 타입이다. - List 는 List 의 하위 타입이다. ● 무공변 / 불공변 : S 와 T 는 서로 관계가 없다.List 와 List 는 서로 다른 타입이다느낌상 업캐..
스프링 부트로 상품 관리 서버를 만들던 중, 리스트(DB는 아직..)에 저장되어 있는 Product를 update하는 중이었다.이때, indexOf()를 사용해서 기존 리스트에 있던 Product의 인덱스를 가져오는 코드를 짜고 있었는데, 계속 기존 리스트에 있던 Product를 찾지 못해, -1을 반환하는 문제가 발생하였다. 리스트에서 사용했을 때, "(가장 먼저 찾은) 동일한 요소의 인덱스를 반환"하는 indexOf()의 특성때문에, 컨트롤러에서 받아온 Product와는 id가 같더라도 참조하고 있는 주소값은 다르기 때문에( indexOf() : equals() 사용함),무조건 -1을 반환하는 문제가 발생한 것이다. 즉, equals 메서드를 id값만 같다면 같은 인스턴스로 인식하도록 "오버라이딩..
(오늘도 어김없이 백엔드 공부 중....) 이번 포스팅에서는 자바의 커스텀 예외에 대해서 글을 써보겠다.백엔드를 만들때, 자바 내부에 있는 예외를 그대로 사용한다면 정확히 어떤 부분에서 에러가 예외가 발생하였고, 또 그 예외가 진행 중인 프로젝트의 어떤 부분에서 걸림돌이 되는지 파악하기 쉽지 않다.그래서 되도록이면 커스텀 예외를 만들어서 사용하는 것이 좋다고 한다.( 정확히 언제 사용하면 좋고, 언제는 그냥 자바 내부 예외를 사용하면 되는지는 아직 잘 모르겠다.. ) 일단 커스텀 예외 생성시 알아야할 규칙부터 알아보자.1. 일반 예외로 선언 경우 → Exception 상속 (extends)2. 실행 예외로 선언 경우 → RuntimeException 상속3. 커스텀 예외명은 Exception으로 끝나는..
enum은 자바에서 상수를 효율적으로 관리하기 위해 나온 문법이라고 한다.긴말 없이 바로 예제부터 보도록 하자.↓package main;public class Application { public static void main(String[] args) { Gender gender1 = Gender.MALE; Gender gender2 = Gender.FEMALE; System.out.println(gender1); System.out.println(gender2); }}enum Gender { MALE, FEMALE;}결과 ↓ )enum의 가장 기본적인 예제라고 할 수 있다. ( gender1, gender2 ..
자바에서 예외를 처리하는 방법 중에서, 저번에는 throw를 정리한 적이 있다.간단하게 정리해보자면,throw new 예외명(); 으로, 강제로 개발자가 예외를 발생시키는 것이다. 어쨌든 이번 포스팅에서는 throws 키워드에 대해서 정리해보도록 하겠다.--------------------------- 이 throws 키워드의 의미에 대해서 간단하게 말해보자면,호출한 부분에서 예외를 처리하도록 시키기! 이다. ( throws 키워드는 메서드 내부에 사용하는 것이 아닌, 메서드명 뒤에 사용한다. )예시를 통해서 이해해보도록하자. 예시 ↓ )package main;public class Application { public static void main(String[] args) { Tes..
그다음으로는 super 키워드를 이용한 예제를 만들어보자.일단 먼저 super 키워드의 의미부터 간단하게 정리하겠다. 1. super → 부모 클래스의 멤버에 접근 할 때2. super() → 부모 클래스의 생성자를 호출하기 위해 사용여기서 super() 키워드를 사용할 때 뭔가 작지만 큰 규칙이 많다. 일단은 각각을 활용한 예제를 만들어보자. 또x2 정리해보자. ⭐️⭐️⭐️⭐️⭐️1. 자식 클래스에서 생성자 내부의 맨 첫 줄에 선언해야한다.2. 자식 클래스에서 모든 생성자는 부모 클래스의 생성자를 포함하고 있어야한다.- 하지만, 만약 자식 클래스의 생성자에 부모클래스의 생성자가 지정되어 있지 않다면( = super() 로 지정되어 있지 않다면), 컴파일러가 자동으로 부모 클래스의 기본 생성자를 호출한..
자바에서, 추상 클래스를 언제 사용하는지는 체스 게임을 만들면서 공부를 해놓고, 이후, 제대로 추상 클래스, super키워드를 활용해본적이 없는 것 같아 오늘 혼자서 추상클래스, super 키워드로 좀 두들겨 보았다. 이렇게 두들기면서 공부한 자바 추상 클래스 개념의 빵꾸(?)부터 정리하고 가겠다.( 중요하다기 보다는, 내가 몰랐던 문법 지식을 남기는 거다. 안 중요하다는 의미는 아니다 ㅋㅋ )---------------------------------------------------------------------------( 2026/3/8 수정 및 추가) 🟩 추상 클래스객체를 생성할 수 있는 클래스를 실체 클래스라고 한다면, 이 클래스들의 공통적인 필드나 메서드를 추출해서 선언한 클래스를 추상 클..
자바 - Exception - Checked, Unchecked 각각 의미 다시 제대로 정리하기 자바 - Exception - Checked, Unchecked 각각 의미 다시 제대로 정리하기자바에서의 런타입 오류(예외, 에러) 중 하나인 예외에 대해서 좀 더 알아보고자 한다. 예외는 크게 checked Exception 와 Unchecked Exception 이 있다. \ 둘의 차이를 간단하게 설명하자면,▶ 컴파일 과정kodong8774.tistory.com 여기서 자바의 Checked Exception과 Unchecked Exception의 차이에 대해서 정리해보았다. 그리고 나는 간단하게 Checked Exception → 컴파일 시점에서 발생하는 예외;Unchecked Exception → 런타..