型を消す
親クラスはジェネリクスをもたない。メソッドがジェネリクスになっている。
子クラスはジェネリクスになっている。
書いてみた。実行時エラーになるのはいやだ。。
import Foundation class A { let b:B init<T>(_ v:T) { self.b = C(v) } /// 問題点 なんでも良いことになってしまっている。 func get<T>() -> T { return b.get() } } class B { func get<T>()->T { let this = self as! C<T> return this.get() } } class C<T> : B { let v:T init(_ v:T) { self.v = v } func get()->T { return v } } func sample() { let a = A("Hello") let b = A(3) let c:String = a.b.get() let d:Int = b.b.get() let e:Int = a.b.get() // 実行時エラーになる。。orz }