public interface Factory<T>
{
T create();
}
public interface Factory<T,P>
{
T create(P... data);
}
私は両方のタイプの名前Factory
を使用できるように、これらのインタフェースを定義する方法はありますか、私はFactoryWithParam
を使用する必要がありますか?Java - ジェネリックを使用する複数の署名?
public interface Factory<T>
{
T create();
}
public interface Factory<T,P>
{
T create(P... data);
}
私は両方のタイプの名前Factory
を使用できるように、これらのインタフェースを定義する方法はありますか、私はFactoryWithParam
を使用する必要がありますか?Java - ジェネリックを使用する複数の署名?
2つのインターフェイスを1つに結合できない理由はありますか。
public interface Factory<T,P>
{
T create();
T create(P... data);
}
しかし、できない場合、同じパッケージ内に同じ名前の2つの異なるインターフェイスを持つことはできません。あなたはそれらを別のパッケージに入れることができますが、私はそれを強く勧告します。コードを維持する者を混乱させるでしょう。
これらの2つのインターフェイスを2つの異なるパッケージに配置する場合に限ります。
いいえ、ジェネリックスが機能するためです。下位互換性を維持するために、生成されたクラスのコンパイル済みバイトコードに違いはありません。コンパイル時チェックのみを実行します。これは同じ名前の2つのクラスを持つことを意味し、同じパッケージ内では許可されません。