2016-05-06 9 views
0

次スウィフトコードに示すように、私は、より多くのジェネリック型パラメータと同じクラスのオブジェクトに型パラメータを持つクラスのオブジェクトをキャストしようとしている:スウィフト:タイプパラメータの継承

class ParameterClassA { 
} 

class ParameterClassB: ParameterClassA { 
} 

class WorkingClassA<T> { 
} 

class WorkingClassB: WorkingClassA<ParameterClassB> { 
} 

let object1 = WorkingClassB() 
let object2: WorkingClassA<ParameterClassA> = object1 

WorkingClassA<ParameterClassB>は、WorkingClassA<ParameterClassA>に「ダウンキャスト」できないため、残念ながら、おそらくこれはうまくいきません。Javaが許可していないことはわかっていますが、Swiftがこのような構造をよりうまくサポートできることを望んでいました。

これを実行する別の方法はスウィフトですか、それとも単に受け入れられないのですか?私にとっては、型パラメータを「アップキャスト」するのはうまくいくようですが、それを許さないのは良い理由でしょうか?

ありがとうございます!

答えて

0

この種のものほど便利で、ジェネリック医薬品が意図するものではありません。

コンパイラには、それぞれのジェネリックは異なるタイプのものであり、兄弟のジェネリックタイプとは(現在)関連していません。それはWorkingClassA<ParameterClassA>WorkingClassA<ParameterClassB>をキャストするWorkingClassA<String>またはWorkingClassA<Int>

WorkingClassA<ParameterClassB>をキャストするよりも違いはありません意味します