InstantSource — 현재 순간 접근 인터페이스

InstantSource — 현재 순간 접근 인터페이스

현재 순간에 접근할 수 있는 방법을 제공하는 인터페이스예요.

출처: Java API Reference

본문

시그니처

public interface InstantSource

알려진 구현 클래스: Clock.

설명

이 인터페이스의 인스턴스는 현재 순간의 플러그 가능한(pluggable) 표현에 접근하는 데 사용돼요. 예를 들어 InstantSourceSystem.currentTimeMillis() 대신 사용할 수 있어요.

이 추상화의 주요 목적은 필요할 때마다 대체 instant 소스를 끼워 넣을 수 있게 하는 것이에요. 애플리케이션은 정적 메서드 대신 객체를 사용해 현재 시간을 얻어요. 이렇게 하면 테스트가 단순해져요. 또한 이 인터페이스는 결과가 실제로 시간선 위의 현재 순간을 나타낸다는 것을 보장하지 않아요. 대신 애플리케이션이 현재 순간이 무엇인지에 대한 제어된 뷰를 제공할 수 있게 해 줘요.

모범 사례로, 애플리케이션은 현재 순간이 필요한 모든 메서드에 InstantSource를 전달해요. 의존성 주입 프레임워크가 이를 구현하는 한 방법이에요. 예를 들어 MyBean 클래스에 InstantSource를 주입하고 source.instant()로 현재 순간을 얻는 식이에요. 이렇게 하면 테스트 중에 fixedoffset 같은 대체 소스를 사용할 수 있어요.

시스템 팩토리 메서드는 사용 가능한 최상의 시스템 시계를 기반으로 한 소스를 제공해요. 이는 System.currentTimeMillis() 또는 더 높은 해상도의 시계를 사용할 수 있어요.

주요 메서드

  • instant() — 소스의 현재 순간을 얻어요.
  • millis() — 소스의 현재 밀리초 순간을 얻어요.
  • system() — 사용 가능한 최상의 시스템 시계를 사용해 현재 순간을 반환하는 소스를 얻어요.
  • fixed(Instant fixedInstant) — 항상 같은 순간을 반환하는 소스를 얻어요.
  • offset(InstantSource baseSource, Duration offsetDuration) — 지정한 기간이 더해진 기준 소스의 순간을 반환하는 소스를 얻어요.
  • tick(InstantSource baseSource, Duration tickDuration) — 지정한 기간의 가장 가까운 발생 시점으로 잘린 기준 소스의 순간을 반환하는 소스를 얻어요.
  • withZone(ZoneId zone) — 지정한 시간대를 가진 시계를 반환해요.

더 알아보기 (Learn more)