抽象コレクションクラス(空間と呼ばれる)と 抽象要素クラス(Atomと呼ばれます)を作成したいと思います。両方のインスタンスはお互いを知る必要があります(正確に型指定されている)。 それは問題です。Javaの汎用クラス(型安全)は、お互いに依存します
abstract class Space<A extends Atom>{
// ...
}
abstract class Atom<S extends Space>{
// ...
}
は良くない:
は"Aがアトムを拡張するには、" 任意の原子を意味ではなく、強く1
は "Sはスペースを拡張し、" 入力した任意の空間を意味ではなく、強く型付けされた1
abstract class Space<A extends Atom<? extends Space>>
abstract class Atom<S extends Space<? extends Atom>>
abstract class Space<S, A extends Atom<S extends Space<A>>>
abstract class Atom<A, S extends Space<A extends Atom<S>>>
and so on ...
:私は、次の試行のいずれかで、完全な型の安全性に到達することはできません
これら2つのクラスは抽象クラスであり、2つのサブクラスが互いに型付けされていることを覚えておきたい。 、次の例 のクラスのSomeSpaceとSomeAtomが互いの強い「タイプの知識」を持っていなければならないことを意味 :
class SomeSpace extends Space<SomeAtom>
class SomeAtom extends Atom<SomeSpace>
いいえ私は噛んでいます。なぜあなたはこれをやっていますか? :)これはあなたの実際の抽象的なですか、それとも質問の単なる例ですか? – cletus
実際のコード例のための私自身の '答え'を参照してください –