반응형

2장 객체 생성과 파괴

 

아이템 6. 불필요한 객체 생성을 피하라

 

  • 생성자 대신 정적 팩토리 메서드를 사용해 불필요한 객체 생성 회피 가능

    Boolean(String);			// java 9에서 사장
    
    Boolean.valueOf(String);
    
  • 캐싱하여 재사용을 통해 성능 개선

    static boolean isRomanNumeral(String s) {
        return s.matches("^(?=.)M*(C[MD]|D?C{0,3})"
                        + "(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})$")
    }
    
    public class RomanNumerals {
        
        private static final Pattern ROMAN = Pattern.compile(
            "^(?=.)M*(C[MD]|D?C{0,3})"
            + "(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})$"
        );
        
        static boolean isRomanNumeral(String s) {
            return ROMAN.matcher(s).matchers();
        }
    }
    

    의도치 않은 오토박싱 회피

 

TODO

  • 정규표현식
  • 유한 상태 머신
  • 지연 초기화
  • 어댑터 : 실제 작업은 뒷단 객체에 위임하고, 자신은 제2의 인터페이스 역할을 해주는 객체
  • 방어적 복사
반응형

'Java > OOP' 카테고리의 다른 글

[Effective Java] 2장. 아이템5  (0) 2022.07.17
[Effective Java] 2장. 아이템4  (0) 2022.07.16
[Effective Java] 2장. 아이템3  (0) 2022.07.16
[Effective Java] 2장. 아이템2  (0) 2022.07.15
[Effective Java] 2장. 아이템1  (0) 2022.07.14

+ Recent posts