본문 바로가기

Java27

더 자바(java 8) - 인터페이스의 변화 기본 메소드 (Default Method) 인터페이스에 메소드 선언이 아니라 구현체를 제공하는 방법 해당 인터페이스를 구현한 클래스를 깨뜨리지 않고 새 기능을 추가할 수 있다. 기본 메소드는 구현체가 모르게 추가된 기능으로 리스크가 있다. 컴파일 에러는 아니지만 구현체에 따라 런타임 에러가 발생할 수 있다. 반드시 문서화 할 것 (@implSpec 자바독 태그 사용) Object가 제공하는 기능 (equals, hashCode)는 기본 메소드로 제공할 수 없다. 인터페이스를 상속받는 인터페이스에서 다시 추상메소드로 변경할 수 있다. 인터페이스 구현체가 재정의 할 수도 있다. public interface Foo5 { void printName(); /* @ImplSpec 이 구현체는 getName()으로.. 2021. 5. 11.
더 자바(java 8) - 함수형 인터페이스와 람다 함수형 인터페이스 (Functional Interface) 추상 메소드를 단 하나만 가지고 있는 인터페이스 @FuncationInterface 애노테이션을 가지고 있는 인터페이스 @FunctionalInterface public interface RunSomething { void doIt(); static void printName() { System.out.println("Kang"); } default void printAge() { System.out.println("30"); } } 이 인터페이스는 함수형 인터페이스가 아닌것 처럼 생겼지만 함수형 인터페이스가 맞다. 왜냐하면 추상 메소드를 단 하나만 가지고 있으며 @FuncationInterface 애노테이션을 가지고 있다. static이나 de.. 2021. 5. 10.
테스트 코드 커버리지 확인하기 (jacoco) tutorial 기본 환경 세팅 Dependency plugins { id 'org.springframework.boot' version '2.4.5' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' id 'jacoco' } group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' developmentOnly 'org.springframework.boot:sprin.. 2021. 5. 1.