일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 밋업프로젝트
- 이펙티브자바
- jdbc
- 한국대학생it경영학회
- 영속성
- 객체지향 쿼리 언어
- Domain Driven Design
- JPQL
- ddd
- 교육기획팀
- java
- JPA
- rabbitmq-delayed-message-exchange
- kusitms
- cicd
- 자바 ORM 표준 JPA 프로그래밍
- scheduling messages with rabbitmq
- 최범균
- reactive operaton
- RESTClient
- GitHub Actions
- Spring
- delayed message plugin
- 도메인 주도 개발 시작하기
- 교육기획팀원
- 큐시즘
- Spring Batch
- 30기
- 자동처리
- springboot
- Today
- Total
목록Language/Java (16)
코딩은 마라톤
아이템 16. public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라class Point { public double x; public double y;} 위와 같은 클래스는 데이터 필드에 직접 접근할 수 있으니 캡슐화의 이점을 제공하지 못한다.또한 API 수정 없이 내부 표현을 바꿀 수 없으며, 불변식 보장 못하고, 외부에서 필드에 접근할 때 부수 작업을 수행할 수도 없다. 따라서 필드들을 private으로 바꾸고 public 접근자 (getter)를 추가한다.class Point { private double x; private double y; public double getX() { return x; } public double getY() { re..

아이템 13. clone 재정의는 주의해서 진행하라Cloneable : 복제해도 되는 클래스임을 명시하는 용도의 인터페이스-> 의도한 목적을 제대로 이루지 못함. 가장 큰 문제 : clone 메서드가 선언된 곳이 Cloneable이 아닌 Object이고, protected 접근제어자그래서 Cloneable을 구현하는 것만으로는 외부 객체에서 clone 메서드를 호출할 수 없다. Cloneable이 하는 일Cloneable 인터페이스를 구현하지 않고 Object's clone 메서드 사용시 'CloneNotSupportedException' 발생Object의 protected 메서드인 clone의 동작 방식을 결정Cloneable을 구현한 클래스의 인스턴스에서 clone을 호출하면 그 객체의 필드들을 하..
5월 31일 금요일....어제 너무 피곤해서 퇴근하자마자 뻗었네요.....작심3일이 돼버렸지만 다시 파이팅해서 읽어보겠습니다ㅜㅜ! 아이템 10. equals는 일반 규약을 지켜 재정의하라equals() 메서드는 뭘까?equals 메서드는 객체끼리 내용을 비교할 수 있는 메서드이고, Object 클래스에 정의되어있다. equals 메서드를 재정의하지 않는 것이 좋을 경우각 인스턴스가 본질적으로 고유할 경우값을 표현하는 게 아닌 동작하는 객체를 표현하는 클래스일 경우 (ex.Thread)인스턴스의 논리적 동치성(logical equality)를 검사할 일이 없을 경우java.util.regex.Pattern은 equals를 재정의해서 두 Pattern의 인스턴스가 같은 정규표현식을 나타내는지 검사하는 방법(..

아이템 7. 다 쓴 객체 참조를 해제하라public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push(Object e) { ensureCapacity(); elements[size++] = e; } public Object pop() { if(size == 0) th..
아이템 4. 인스턴스화를 막으려거든 private 생성자를 사용하라저번 블로그에 작성했었던 유틸 클래스의 경우 정적 메서드와 정적 필드만을 갖고 있습니다.이러한 유틸 클래스는 인스턴스를 생성해 사용하는 것이 아닌 유틸 클래스의 정적 메서드와 정적 필드를 사용합니다.그런데 Util이란 단어가 클래스에 붙지 않고, 그냥 클래스와 똑같이 생겨서 외부에서 인스턴스화 하여 사용할 수 있습니다.왜냐하면 생성자가 없이 정적 필드와 메서드만 있어도 기본 생성자가 컴파일러에 의해 자동으로 생성되기 때문입니다.public class Util { // 컴파일러가 생성해주는 기본 생성자 public Util() {} 기본 생성자의 접근 제어자는 Public이기 때문에 외부에서 인스턴스화할 수 있습니다. 이를 방지..
아이템 1. 생성자 대신 정적 팩터리 메서드를 고려하라정적 팩터리 메서드 : 그 클래스의 인스턴스를 반환하는 정적 메서드 장점(5)1. 반환될 객체의 특성을 쉽게 묘사할 수 있는 "이름" 을 지을 수 있다.// 생성자new Bake(String, String, String)// 정적 팩터리 메서드Bake.bakeCookie(String, String, String) 2. 호출될 때마다 새로 인스턴스를 생성하지 않아도 된다.public static Boolean valueOf(boolean value) { return value ? true : false;}// valueOf 메서드는 true, false를 미리 만들어놓고 반환하기 때문에 // 자주 요청해도 요청 횟수만큼 생성되는 것이 아니라 성능 향상의..
이번 글의 주제는 불변객체(Immutable Object)이다. 이 주제 역시 면접에서 질문을 받았었다. 면접관님 : 불변객체가 뭐예요? 나 : 내부 데이터를 변경할 수 없는 객체를 의미합니다.. 면접관님 : 불변객체를 쓰는 이유가 뭐예요? 나 : 객체지향의 특징 중 캡슐화때문이라고 할 수 있습니다. 캡슐화를 통해 객체는 외부에서 접근되지 않고 ~~~~~ 위와 같이 답변을 했지만,, 사실 불변객체가 말 그대로 "내부 데이터를 변경하지 못하는 객체"라고만 알고 있어서 이번 기회에 알아보고자 한다 ! 불변 클래스 불변객체를 알아보기 전에 불변 클래스부터 알아보자 ! 불변클래스란 인스턴스 내부의 값을 수정할 수 없는 클래스를 말한다. 그렇다면 불변클래스를 만드는 방법은 뭐가 있을까? 객체의 상태를 변경하는 메..

최근 프로그래머스를 풀던 중 모르는 메서드가 있었다,, (https://school.programmers.co.kr/learn/courses/30/lessons/42576) for (String c : completion) { hashMap.put(c, hashMap.getOrDefault(c, 0) + 1); } 바로 "getOrDefault()" 메서드이다. getOrDefault(Object key, V defaultValue) 자바 공식 문서에서는 위와 같이 설명하고 있다. 아래 코드는 Map 인터페이스에 구현된 default 코드이다. default V getOrDefault(Object key, V defaultValue) { V v; return (((v = get(key)) != null)..