クラスをパラメータ化するときにデフォルトの型を指定できますか? 例:私はNONEまたはすべてのパラメータを指定しないする必要があり、私の実装でGenericを使用したJavaでのオプションのパラメータ設定
// abstract class
public abstract class AbsClass<T1 extends Par1Class, T2 extends Par2Class> {
// code
}
// parametrized imlementation class
public class RealClass extends AbsClass<ClassThatExtendsPar1, ClassThatExtendsPar2Class> {
// code
}
// non-parametrized imlementation class
public class RealClass extends AbsClass {
// code
}
。 2番目のパラメータを次のようにする必要はありません。
// abstract class
public abstract class AbsClass<T1 extends Par1Class, T2 extends Par2Class : default Par2Class > {
// code
}
// parametrized only mandatory imlementation class
public class RealClass extends AbsClass<ClassThatExtendsPar1> {
// code
}
これを行うには十分な理由があるのかもしれません。私の「オプションのパラメータ」(T2はPar2Classを拡張しているため)は、値オブジェクトとして使用されるクラスであり、他のクラスのロットでも拡張されています。 T2を指定しない場合は、ValueObjectのデフォルトメソッドを使用します。私が指定すれば、私は特定の方法が必要で、キャストする必要はありません。 私は継承の順序で別のクラスを導入しようと考えていましたが、オプションのパラメータ設定について興味がありました。ありがとう。 – davorp
私は間違っているかもしれませんが、そのようなユースケースがあると思います。デフォートテンプレートタイプが許可されているC++では、それらは使用されます。 STL型のメモリアロケータのデフォルトバージョンを提供します。 – Rom1
SwingWorkerの中間型パラメータは、結果パラメータと同じ場合によく使用されます。 –