제 코드에는 일반 컨테이너 인터페이스가 있습니다. 컨테이너에는 팩토리 객체가 있고 컨테이너 유형은 팩토리에 의해 결정됩니다.일반 컨테이너 팩터
과 같이 :
는public class HardGenerics {
public static Container<String> stringContainer(Function<Supplier<String>,Container<String>> factory) {
return factory.apply(() -> "");
}
public static Container<Integer> integerContainer(Function<Supplier<Integer>,Container<Integer>> factory) {
return factory.apply(() -> 0);
}
private interface Container<T> { }
public static class ListBackedContainer<T> implements Container<T>{
private final Supplier<T> factory;
private List<T> list = new ArrayList<T>();
public ListBackedContainer(Supplier<T> factory) {
this.factory = factory;
}
}
public static void main(String[] args) {
create();
}
private static void create() {
stringContainer(ListBackedContainer::new);//extract single parameter
integerContainer(ListBackedContainer::new);//extract single parameter
}
}
질문 :
내가 용기 공장을 통과하고자하는 (즉, ListBackedContainer :: 새)의 주위에 내 코드베이스에,하지만 난 방법을 알아낼 수 없습니다 그것을 입력하려면?
업데이트 :
그래서 문제에 정교. 나는 그것이 확실하지 않다
여기에있는 것이 잘못되었습니다. – shmosel
아래의 두 가지 설명과 제안 된 해결 방법에서 알 수 있듯이 하나의 ContainerFactory를 전달하려고하지만 어떤 유형을 가져야합니까 – mathiasbn
죄송합니다. 왜'containerFactory :: create'가'ListBackedContainer :: new'보다 좋은가? – shmosel