본문 바로가기

IT/Java64

Field Injection | Contructor Injection @Autowired private DependencyA dependencyA; @Autowired private DependencyB dependencyB; @Autowired private DependencyC dependencyC; 위의 경우 필드 주입인데 이 경우 읽기와 사용하기에 쉽다는 장점이 있다. private final DependencyA dependencyA; private final DependencyB dependencyB; private final DependencyC dependencyC; @Autowired public DI(DependencyA dependencyA, DependencyB dependencyB, DependencyC dependencyC) { this.depen.. 2020. 7. 7.
정규식 추출 package test2; import java.util.regex.Matcher; import java.util.regex.Pattern; public class main { public static void main(String[] args) { try { String content = "\n" + "\n" + " "; Pattern pattern = Pattern.compile("src=[\"'](.*?)(\")"); Matcher matcher = pattern.matcher(content); while (matcher.find()) { System.out.println(matcher.group(1)); } } catch (Exception e) { e.printStackTrace(); } } } 2020. 3. 17.
이펙티브 자바 8장 - 메서드 매개변수가 유효한지 검사하라 매개변수 검사를 제대로 하지 못하면 원자성을 어기는 결과를 낳을 수 있다. 그렇기에 던지는 예외를 자바독 태그를 이용하여 문서화 시켜야 한다. java.util.Object.requireNonNull 메서드는 유연하고 사용하기도 편하기에 수동으로 null 검사를 하지 않아도 된다. 메서드는 최대한 범용적으로 설계하나 머서드가 건네받은 값으로 무언가 제대로 된 일을 할 수 있다면 매개변수 제약은 적게 만드는 것이 좋다. 적시에 방어적 복사본을 만들라 package effectivejava.chapter8.item50; import java.util.*; // 코드 50-1 기간을 표현하는 클래스 - 불변식을 지키지 못했다. (302-305쪽) public final class .. 2020. 1. 6.
이펙티브 자바 - 7장 람다와 스트림 익명 클래스보다는 람다를 사용하라 타입을 명시해야 코드가 더 명확 할 때만을 제외하고는 람다의 모든 매개변수 타입은 생략해야한다. 이후 컴파일러가 "타입을 알 수 없다" 라는 오류를 낼 경우에만 해당 타입을 명시하면 된다. 람다의 단점은 이름이 없으며 문서화를 하지 못하기에 코드 자체로 동작이 명확히 설명되지 않거나 코드줄 수가 많아 지는 경우에는 람다를 사용하지 말아야 한다. (세줄이 넘어가면 사용하지 않는 것이 좋다) 람다는 자신을 참조 할 수 없기때문에 람다에서 this 키워드는 바깥 인스턴스를 가리키며, 익명에서의 this는 익명 클래스의 인스턴스 this를 가르킨다. 익명 클래스는 함수형 인터페이스가 아닌 타입의 인스턴스를 만들때 만 사용하는 것이 좋다. 람다보다는 메서드 참조를 사용하라 메서드.. 2020. 1. 3.