は、以下に示すように、私は、標準の一般的なクラスを持っていることを考えてみましょう:特定のタイプのセットのみに制限する汎用クラスを定義するにはどうすればよいですか?
class Attribute<T>{
public String name;
public T value;
}
がある所定のセットに種類を制限することが可能であり、例えば、私が唯一利用可能にしたいということを検討し、属性、 of:文字列、整数、ブール値、バイト[]。
これは「セミジェネリック」クラスのようなものです。
これができない場合は、これを実装するにはどのようなデザインが最適でしょうか?
おそらく、このようなものは、私はデザインの同じ種類を採用することができ、他のライブラリに存在します。ここでの意図は、これがAPIの一部になるということです。そのため、できるだけ直感的にユーザーに理解してもらいたいと考えています。
アン脇には:C++では、このようなものは、一般に「コンセプト」と呼ばれます。ある種の制約のセットを指定します。コンパイラに頼って、コンセプトが違反している場所を特定できます(準最適なエラーメッセージで)。多分同じことがJavaで動作します。 – pmr
@ pmr:話題以外、それは部分専門化と呼ばれるものですか? – Everyone
@Everyoneいいえ、部分的な特殊化とは、テンプレート( 'generic')が特別な型でインスタンス化されたときに異なって動作することを意味します。 – pmr