私のコードでは、汎用コンテナインタフェースを使用しています。コンテナにはファクトリオブジェクトがあり、コンテナの種類はファクトリによって決定されます。汎用コンテナ工場
そのよう:私は私のコードベースで周りのコンテナ工場(すなわちListBackedContainer ::新)に合格したいと思いますが、私はどのように把握することはできません
:
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
}
}
質問それを入力するには?
更新:
ので問題について詳しく説明します。私はそれがだかわからない
ここに何がありますか? – shmosel
以下の2つのコメントと私の提案された回避策から分かるように、単一のContainerFactoryを渡したいですが、どのような型にする必要がありますか – mathiasbn
申し訳ありませんが、私はフォローしていません。なぜ 'containerFactory :: create'は' ListBackedContainer :: new'よりも好ましいのですか? – shmosel