0
例えばセレクタのインスタンスを受け入れるアクション。また、Action Predicateの実装も実装していますが、引数の型はコレクションの戻り値の型と一致する必要があります。パラメータ化タイプ(GADT)
主な考え方は、あるタイプを別のタイプに依存させることです。それは普通の古いJava 6でも可能ですか?
例えばセレクタのインスタンスを受け入れるアクション。また、Action Predicateの実装も実装していますが、引数の型はコレクションの戻り値の型と一致する必要があります。パラメータ化タイプ(GADT)
主な考え方は、あるタイプを別のタイプに依存させることです。それは普通の古いJava 6でも可能ですか?
C
がAction<C, O>
であることを強制するものはありません。それ自体はパラメータ化されたタイプです。あなたは例えばAction<String, Object>
と宣言することができます - 次にpredicate
とは何ですか? String<Object>
のようなものはありません。
詳細を知らなくても、何をしたいことは、より具体的なものであるかのように、それは私には見えます、例えば、Predicate<T>
インタフェース定義:私は従うことはよく分からない
interface Predicate<T> {
}
interface Action<C extends Predicate<O>, O> {
Collection<O> doAction(C predicate);
}
class Selector<T> implements Predicate<T> {
}
を。あなたは 'Action'を' Action> 'と定義することができますが、' predicate'の型に 'C'を使うこともできます。 Javaは、ほとんどの言語と同様に、高次型もサポートしていません。 –
@ TomHawtin-tackline Action>は有効な定義ではありません。 –
jdevelop
Cはジェネリックであるだけでなく、CがOのジェネリック型であることを保証することはできません.Cが特定のクラスから拡張するか、Oを含むことができる特定のインターフェイスを実装するように指定できます。C、O ? – Cromat