generics で型を判別する時に、ちょっとハマったのでメモ
genericsな型(以下 T
)をプロパティとして持ったクラスにintを渡し、その型をif文で判別しようとしたところハマってしまった
やったことは以下の通りである。
class GenericsModel<T> {
final T type; // set or get される場合の型
PrefKeyModel(this.type);
}
main() {
final model = GenericsModel(int);
if (model.type is int) {
// Int!
} else {
// Error! <- こっちが来る
}
}
とするとErrorになってしまう
これはintが入っていたとしても T
型が設定されているためで is
を使ってもtrueにはならない
class GenericsModel<T> {
final T type; // set or get される場合の型
GenericsModel(this.type);
}
main() {
final model = GenericsModel(int);
if (model.type == int) {
// Int! <- こっちが来る
} else {
// Error!
}
}
こうやって判別するのが正解