분류 전체보기
-
[Java] 컴포지션을 활용한 코드의 재사용 방법 (Effective Java 3rd_Item18)Java 2019. 8. 4. 01:38
상속은 상위 클래스의 코드를 재사용할 수 있도록 해주지만 캡슐화를 깨뜨립니다. 즉, 상위 클래스가 어떻게 구현되느냐에 따라서 하위 클래스의 동작에 영향을 미칠 수 있습니다. 그렇기 때문에 상위 클래스의 설계자는 확장을 충분히 고려하고, 문서화를 해두어야 합니다. Effective Java 3rd 책의 예제 코드를 한 번 살펴보겠습니다. public class InstrumentedHashSet extends HashSet { private int addCount = 0; public InstrumentedHashSet() { } public InstrumentedHashSet(int initCap, float loadFactor) { super(initCap, loadFactor); } @Override..
-
[Java] Comparable 인터페이스Java 2019. 7. 29. 00:30
Comparable 인터페이스는 compareTo() 메서드를 통해 객체 간의 순서를 비교할 수 있도록 해줍니다. 즉, Comparable 인터페이스를 구현한 클래스는 그 인스턴스들에게 순서가 존재한다는 뜻입니다. Comparable 인터페이스를 구현하면 객체들의 배열을 Arrays.sort() 메서드를 통해 아래와 같이 손쉽게 정렬할 수 있습니다. public class Node implements Comparable { private String content; private int order; public Node(String content, int order) { this.content = content; this.order = order; } @Override public int compareT..
-
[Java] Equals 의 재정의 규칙 (Effective Java 3rd_Item10)Java 2019. 7. 25. 23:50
Object 클래스의 equals() 메서드는 재정의할 때 일반 규약을 지키지 않으면 예상치 못한 결과를 초래할 수 있습니다. 이러한 문제들을 회피하는 좋은 방법은 아예 재정의를 하지 않는 것입니다. 아래와 같은 상황에서는 equals() 메서드를 재정의하지 않는 것이 최선입니다. 각 인스턴스가 본질적으로 고유할 때. (값을 표현하는 객체가 아니라 동작하는 객체를 표현하는 경우) 인스턴스 간에 논리적인 동치성을 검사할 필요가 없을 때. 상위 클래스에서 재정의한 equals() 메서드가 하위 클래스에도 딱 들어맞을 때. 클래스가 private이거나 default이고, equals() 메서드를 호출할 일이 없을 때. 만약 equals() 메서드를 재정의할 때는 반드시 동치 관계를 구현하며, 다음과 같은 일반..
-
Spring AOP PointCut 표현식 정리Java/Spring 2019. 7. 21. 13:47
지난 번에 이어서 Advice가 어떤 JoinPoint에 사용될 것인지를 지정하는 PointCut 표현식을 정리하겠습니다. 포인트컷에는 다양한 명시자를 이용할 수 있습니다. execution Advice를 적용할 메서드를 명시할 때 사용합니다. within 특정 타입에 속하는 메서드를 JoinPoint로 설정되도록 명시할 때 사용합니다. bean 스프링 버전 2.5 버전부터 지원하기 시작했으며, 스프링 빈을 이용하여 JoinPoint를 설정합니다. execution 명시자 execution([수식어] 리턴타입 [클래스이름].이름(파라미터) 수식어 : public, private 등 수식어를 명시합니다. (생략 가능) 리턴타입 : 리턴 타입을 명시합니다. 클래스이름 및 이름 : 클래스이름과 메서드 이름을 ..