, 나는이 행동 뒤에 explications을 찾고 실행 시간에 휴식 님의자바 새로운 시간 API는 컴파일하고
Instant.from(LocalDateTime.of(2017,01,01,0,0,0,0))
컴파일 잘하지만 수율 :
Exception in thread "main" java.time.DateTimeException: Unable to obtain Instant from TemporalAccessor: 2017-01-01T00:00 of type java.time.LocalDateTime
내 질문은 : 이러한 유형이 호환되지 않는 이유는 무엇입니까? API가 왜 나를 코딩하고 비명을 지르지 않고 컴파일 할 수 있었습니까?
(그리고 아마도 뭔가를 놓친 거지) :
(예)를 LocalDateTime를보다 효율적으로 사용에서 인스턴트을 만들려면 정적 및 동적 검사로 코드 작성 및 읽기의 편리 성. 많은 종류의 객체를 여러 메소드에 전달할 수있는 매우 일반적인 인터페이스가 있지만, (디자이너의 관점에서 볼 때) 무의미한 일을한다면 런타임에 실패하게됩니다. 'Instant.of()'의 인수 형인'TemporalAccessor'는 이러한 인터페이스 중 하나이며, 네,'LocalDateTime'이이를 구현하도록 선언되었습니다. 이것이 바로 여러분의 코드가 컴파일되는 이유입니다. –'LocalDateTime'은 특정 시점을 정의하지 않으므로 수행하려고 시도한 것이 의미가 없습니다. 따라서 불행히도 런타임에만 실패합니다. –
'TemporalAccessor'는 많은 필드를 지원합니다. 'isSupported()'메소드를 통해 지원되는 필드를 질의 할 수있다. 'Instant.from()'은 필드'INSTANT_SECONDS'와'NANO_OF_SECOND'를 요구하도록 문서화되어 있으므로, 예외를 얻고 처리하는 것을 선호한다면 변환을 시도하기 전에 이것을 확인할 수 있습니다. –