스터디 JAVA 8 이후 변경점

 

Interface


 

1
2
3
4
5
6
7
8
9
interface Test {
 
    default 타입 메소드명(매개변수) { 실행문 ... }
 
    static 타입 메소드명(매개변수) { 실행문 ... }
 
}
 
 
cs

1) 디폴트 메소드 (default method)
구현 객체에서만 사용이 가능하며, 구현 클래스에서 오버라이딩을 하여 수정이 가능

2) 정적 메소드 (static method)
객체 생성 없이 인터페이스만으로도 호출이 가능하다. 

 

java.time 패키지


JAVA 7 이전까지는 Date와 Calendar 클래스를 이용해서 날짜와 시간 정보를 얻을 수 있었지만 JAVA 8 부터 날짜와 시간을 나타내는 여러 가지 API가 추가되었다. 

 

클래스명 설명
LocalDate 로컬 날짜 클래스
LocalTime 로컬 시간 클래스
LocalDateTime 로컬 날짜 및 시간 클래스 (LocalDate + LocalTime)
ZonedDateTime ISO-8601 달력 시스템에서 정의하고 있는 타임존의 날짜와 시간을 저장하는 클래스
Instant 특정 시점의 타임스탬프 클래스

 

람다


JAVA 8 부터 람다식을 지원하며 람다식은 객체지향 언어보다는 함수지향 언어에 가깝다. 

 

기본형식

(타입 매개변수) -> {실행문 ...}

 

함수적 인터페이스 (@FunctionalInterface)

하나의 추상 메소드가 선언된 인터페이스만이 람다식의 다켓 타입이 될 수 있다. 이러한 인터페이스를 함수적 인터페이스라고 한다. (@FunctionalInterface 애노테이션 선언은 선택사항) 

1
2
3
4
5
@FunctionalInterface
public interface TestInterface {
    public void test();
    public void test2(); // 컴파일 오류 
}
 
cs

 

익명 구현 객체 

1
2
3
4
5
6
7
TestInterface ti = new TestInterface() {
    public void test() {
        System.out.println("test");
    }    
};
        
ti.test();
cs

 

람다를 이용한 익명 구현 객체

1
2
TestInterface ti = () -> { System.out.println("test"); }; 
ti.test();
 
cs

'기타' 카테고리의 다른 글

스터디 객체지향 이론  (0) 2020.08.03
스터디 DDD  (0) 2020.08.03
스터디 spring 과 Spring Boot 차이  (0) 2020.08.03
스터디 MSA  (0) 2020.08.02
스터디 애자일  (0) 2020.08.02

Tags

Read Next