インターフェース設計でジェネリックを使用する場合
サードパーティが将来実装する予定のインターフェイスがいくつかあり、自分で基本実装を提供します。例を示すためにカップルを使用するだけです。 現在、それらは次のように定義されています 項目: public interface Item { String getId(); String getName(); } ItemStack: public interface ItemStackFactory { ItemStack createItemStack(Item item, int quantity); } ItemStackContainer: public interface ItemStackContainer { default void add(ItemStack stack) { add(stack, 1); } void add(ItemStack stack, int quantity); } 今、ItemそしてItemStackFactory私は、将来それを拡張する必要のあるサードパーティを絶対に予測することができます。ItemStackContainer将来的に拡張することもできますが、提供されているデフォルトの実装以外では、予測できる方法では拡張できません。 今、私はこのライブラリを可能な限り堅牢にしようとしています。これはまだ初期段階(プレプレアルファ)であるため、これは過剰エンジニアリング(YAGNI)の行為である可能性があります。これはジェネリックを使用するのに適切な場所ですか? public interface ItemStack<T extends Item> { …