Closed 102092 closed 4 years ago
- java8에서 나온 Supplier라는 인터페이스에 대해 간단하게 나마 설명해주시면 감사하겠습니다!
Supplier 인터페이스만 분리해서 보기 보다는 전체적인 functional interface의 구조를 보면 자연스럽게 이해가 될 거 같네요. java.util.function에서 가장 대표적인 개념들을 꼽아보자면
Function<T, R>
- 타입 T의 인풋을 받아서 타입 R의 아웃풋을 반환Consumer<T>
- 타입 T의 인풋을 받고 아웃풋 xSupplier<T>
- 인풋 x, 타입 T의 아웃풋을 반환Predicate<T>
- 타입 T의 인풋을 받아 boolean 값을 반환
- 한정적 와일드 타입을... 이건 아마도
Supplier<? extends Tile>
코드를 설명하는 것 같은 데 제가 이해한 바로는Tile
클래스를 상속받는 클래스라면 모든지 가능하다? 라는 의미같은 데, 아마도 1번의 설명과 맞물려서 ... 한번 이야기해보면 좋을듯 합니다.
이해하신 것이 맞습니다. Supplier를 사용해 의존 객체 주입을 사용할 때 한정적 와일드 타입을 사용함으로써 하위 클래스의 객체를 주입하는 것을 가능하게 해주기 위해 사용한다고 이해하면 되겠네요.
p.30 의존 객체 주입이라 하는 이 기법은 클래스의 유연성, 재사용성, 테스트 용이성을 기막히게 개선해준다.
외부에서 객체를 주입받는 기법이 내부에서 객체를 생성해서 할당하는 방식에 비해 유연성, 재사용성, 테스트 용이성에 유리하다고 하는데 왜 그런지 각 키워드 별로 간단히 설명해주시면 감사하겠습니다!
Supplier<? extends Tile>
코드를 설명하는 것 같은 데 제가 이해한 바로는Tile
클래스를 상속받는 클래스라면 모든지 가능하다? 라는 의미같은 데, 아마도 1번의 설명과 맞물려서 ... 한번 이야기해보면 좋을듯 합니다.