비검사 경고를 제거하라 💡비검사 경고란? 비검사 경고란 에러는 아니지만 warning이 뜨거나 영역이 노란색으로 되어 개발자에게 경고를 알려주는 것입니다. 제네릭을 사용하면서 자주만나게 되며, 비검사 경고로는 비검사 형변환, 메서드 호출, 매개변수화 가변인수 타입, 변환 경고등 다양한데 이러한 대부분의 비검사 경고들은 쉽게 해결할 수 있습니다. 💡비검사 경고해결 방법 자바 7버전부터는 다이아몬드 연산자()만으로도 해결이 가능합니다.(타입 추론 가능) 이런 경고는 해결하기 쉬운 경고이며, 해결하기 어렵거나 바로 해결할 수 없는 경고가 나타날 수 있는데 이런 비검사 경고를 최대한 제거할 수 있도록 해야합니다. 그렇게 된다면 타입 안전성이 보장됩니다. List foods = new ArrayList(); //..
로 타입은 사용하지 말라 로 타입(raw type)이란 제네릭에서 타입 매개변수를 전혀 사용하지 않은 경우를 말합니다. 이러한 로 타입은 타입 매개변수가 없기 때문에 컴파일러에서 형변환 코드를 알아서 넣어주지 못하기 때문에 실수로 의도와 다른 타입의 객체를 넣어도 오류가 발생하지 않고 컴파일되고 실행이 됩니다. private final List users = ...; 🧨 문제가 발생하는 코드 Foods 클래스의 print 메서드에서 iterator로 순회시 Food 클래스로 형변환시 예외가 발생하게 됩니다. public class Foods { private final List foods = new ArrayList(); public void add(Object o) { foods.add(o); } pu..
멤버 클래스는 되도록 static으로 만들라. 중첩 클래스란 다른 클래스 내부에 정의된 클래스를 말합니다. 중첩 클래스는 자신을 감싼 바깥 클래스에서만 쓰여야하며, 그 외에 쓰임새가 있다면 톱 레벨 클래스로 만들어야 합니다.(static) 💡 중첩 클래스의 종류 정적 멤버 클래스 비정적 멤버 클래스 익명 클래스 지역 클래스 정적 멤버 클래스 💡 특징 다른 클래스 안에 선언되는 클래스입니다. 바깥 클래스의 private 멤버에도 접근할 수 있습니다. 정적 멤버 클래스는 다른 정적 멤버와 똑같은 접근 규칙을 적용받습니다. 정적 멤버 클래스와 비정적 멤버 클래스의 차이 정적 멤버 클래스와 비정적 멤버 클래스의 구문상 차이는 static이 있냐 없냐의 차이지만 의미상의 차이는 생각보다 큽니다. 비정적 멤버 클래..
태그 달린 클래스보다는 클래스 계층구조를 활용하라 태그 달린 클래스란, 두 가지 이상의 의미를 표현할 수 있으며 현재 표현하는 의미를 태그 값으로 알려주는 클래스입니다. 🧨 예제 코드 Figure 클래스는 원(Circle)과 사각형(Rectangle)을 나타내는 클래스이고, 하나의 클래스에서 두 타입에 대응이 가능합니다. area 메서드는 타입별로 맞는 크기를 계산해 반환하기에 편해보일 수 있습니다. public class Figure { enum Shape { RECTANGLE, CIRCLE } // 공통 필드 final Shape shape; double length; double width; double radius; public Figure(double radius) { this.shape = S..
- Total
- Today
- Yesterday
- spring boot redis 대기열 구현
- polling publisher spring boot
- 서비스 기반 아키텍처
- JDK Dynamic Proxy와 CGLIB의 차이
- redis sorted set
- spring boot 엑셀 다운로드
- 레이어드 아키텍처란
- 자바 백엔드 개발자 추천 도서
- 람다 표현식
- transactional outbox pattern
- redis sorted set으로 대기열 구현
- transactional outbox pattern spring boot
- spring boot excel download paging
- service based architecture
- 트랜잭셔널 아웃박스 패턴 스프링부트
- java ThreadLocal
- java userThread와 DaemonThread
- spring boot redisson destributed lock
- 공간 기반 아키텍처
- spring boot excel download oom
- pipe and filter architecture
- space based architecture
- @ControllerAdvice
- redis 대기열 구현
- spring boot redisson sorted set
- spring boot redisson 분산락 구현
- pipeline architecture
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- microkernel architecture
- spring boot poi excel download
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |