2011-01-25 10 views
1
public interface Factory<T> 
{ 
    T create(); 
} 

public interface Factory<T,P> 
{ 
    T create(P... data); 
} 

私は両方のタイプの名前Factoryを使用できるように、これらのインタフェースを定義する方法はありますか、私はFactoryWithParamを使用する必要がありますか?Java - ジェネリックを使用する複数の署名?

答えて

4

2つのインターフェイスを1つに結合できない理由はありますか。

public interface Factory<T,P> 
{ 
    T create(); 
    T create(P... data); 
} 

しかし、できない場合、同じパッケージ内に同じ名前の2つの異なるインターフェイスを持つことはできません。あなたはそれらを別のパッケージに入れることができますが、私はそれを強く勧告します。コードを維持する者を混乱させるでしょう。

0

これらの2つのインターフェイスを2つの異なるパッケージに配置する場合に限ります。

1

いいえ、ジェネリックスが機能するためです。下位互換性を維持するために、生成されたクラスのコンパイル済みバイトコードに違いはありません。コンパイル時チェックのみを実行します。これは同じ名前の2つのクラスを持つことを意味し、同じパッケージ内では許可されません。

関連する問題