일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- db
- 스프링 빈
- 스프링 컨테이너
- springboot
- DIP
- 스프링 부트
- assertThrows
- jdbc
- spring
- 스프링 프레임워크
- 필드 주입
- 스프링 부트 기본
- sqld
- DI
- Effective Java
- 스프링
- 스프링 부트 입문
- 스프링부트
- resultMap
- Javascript
- kafka
- JPA
- 생성자 주입
- mybatis
- SQL
- 싱글톤
- thymeleaf
- java
- assertThat
- @Configuration
- Today
- Total
목록Language (90)
선 조치 후 분석
갑자기 궁금해져서 정리해 보았다.Integer.valueOf() vs Integer.parseInt()-> 모두 문자열을 정수로 변환하는 역할을 하지만, 둘 사이에는 몇 가지 중요한 차이점이 있다.Integer.valueOf(String s)-> 반환타입 : Integer -> 값을 반환할 때는 새 객체를 생성하지 않고 이미 캐싱된 객체를 반환 String str = "123";Integer num = Integer.valueOf(str);-> Integer 객체가 필요할 때 사용Integer.parseInt(String s)-> 반환타입 : int -> int 기본형을 반환하기 때문에 캐싱이나 객체 생성과 관련이 없다 String str = "123";int num = Integer.parseInt(..
개발하는 과정에서 TypeReference를 사용하는 이유와 제네릭(Generic)에 대한 개념이 부족하다고 판단하여 정리한 글Generic- 데이터 타입(Data Type)을 일반화(Generalize)한다는 것을 의미 - 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법 컴파일 시에 미리 타입 검사(Type Check)를 수행하면 다음과 같은 장점이 존재 1. 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있다. 2. 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄여준다.JDK 1.5 이전에는 여러 타입을 사용하는 대부분의 클래스나 메소드에서 인수나 반환값으로 Object 타입을사용했다. 하지만, 이 경우에는 반환된 Object 객체를 다시 ..
clone() 메서드는 객체의 모든 필드를 복사하여 새로운 객체에 넣어 반환하는 동작을 수행한다. 즉, 필드의 값이 같은 객체를 새로 만드는 것이다. Clonable의 역할 - 복제해도 되는 클래스임을 나타내는 믹스인 인터페이스 - Object 클래스에 protected clone()이라는 메서드가 있다. - Clonable 인터페이스는 clone() 메서드의 동작방식을 결정한다. - Clonable을 구현하지 않은 인스턴스에서 clone()을 호출하면 CloneNotSupportedException을 던진다. 믹스인( Mixed in ) 인터페이스 객체지향언어에서 다른 클래스에서 '사용'할 목적으로 만들어진 클래스 - '포함(has-a)'으로 설명된다. '상속(is-a)'과 비교되는 개념. Compos..
toString()은 Object 클래스의 public 메서드이다. 기본적으로 toString()은 "클래스의 이름@hashCode(16진수 변환)" 값을 반환한다. 기본적으로 이 값은 사람이 읽기 어려울 뿐 아니라 쓸모없는 메시지로 남게 된다. 가급적이면 그 객체가 가진 주요 정보 모두를 반환하는 게 좋다. 객체가 크거나 문자열로 표현하기에 적합하지 않다면 요약정보로 표현해도 된다. toString을 구현할 때 반환값의 포맷 문서화에 따른 장단점 장점 - 포맷을 명시하면, 그 객체는 표준적이고, 명확하고, 사람이 읽을 수 있게 된다. 단점 - 포맷을 명시하면, 평생 그 포맷에 얽매이게 된다. 프로그래머들이 그 포맷에 맞춰 파싱이 필요하다. 반대로 포맷을 명시하지 않는다면, 향후 릴리스에서 정보를 더 넣..
자바의 최고 조상 Object는 equals 메서드뿐만 아니라 hashCode 메서드도 기본적으로 정의되어 있다. HashMap, HashSet과 같은 Collection에서 Object의 hashCode 메서드를 활용하기 때문이다. 그래서 Item10에서 Object를 재정의했다면, hashCode도 함께 재정의해야 한다. Object 명세서에서 정의되어 있는 hashCode가 지켜야 하는 규약이다. equals 비교에 사용되는 정보가 변경되지 않았다면, hashCode는 몇 번을 호출해도 일관되게 항상 같은 값을 반환해야 한다. equals가 두 객체를 같다고 판단했다면, 두 객체의 hashCode는 동일한 값을 반환해야 한다. equals가 두 객체를 다르다고 판단했더라도, 두 객체의 hashCod..
결론부터 말하면 이렇다. 꼭 필요한 경우가 아니라면, equals를 재정의하지 말자. 재정의해야 하는 경우라면 클래스의 핵심 필드 모두가 5가지 규약을 지켜가며 비교하자. equals 메서드는 재정의하기 쉬워 보이지만, 곳곳에 함정이 도사리고 있어서 자칫하면 끔찍한 결과를 초래할 수 있다. 문제를 회피하기 가장 좋은 방법은 재정의를 하지 않는 것이다. 그냥 두면 그 클래스의 인스턴스는 오직 자기 자신과만 같게 된다. 그러니 다음에서 열거한 상황 중 하나에 해당한다면 재정의하지 않는 것이 최선이다. 1. 각 인스턴스가 본질적으로 고유하다. 값을 표현하는 게 아니라 동작하는 개체를 표현하는 클래스가 여기에 해당한다. Thread가 좋은 예로 Object의 equals 메서드는 이러한 클래스에 딱 맞게 구현되..