2016-06-14 9 views
1

ダーツの別の「ジェネリッククラス」を拡張する「ジェネリッククラス」を宣言する正しい方法ですか?ジェネリックパラメータには型制限があることに注意してください。Dart:制限付きジェネリッククラスを拡張する

// available types 
class BaseType {} 
class DerivedType extends BaseType {} 

class BaseClass<Type extends BaseType> { 
    final Type prop; 
    BaseClass(this.prop) { 
    // can be either BaseType or DerivedType 
    print(prop); 
    } 
} 

class DerivedClass<Type extends BaseType> extends BaseClass<BaseType> { 
    DerivedClass(BaseType prop) : super(prop); 
} 

上記のコードは動作しますが、私は正しい構文を使用していた場合、私はわかりません。

答えて

2

あなたのコードが正しいですが、私はあなたがDerivedClassの総称でセマンティックミスをしたと思う:

// available types 
class BaseType {} 
class DerivedType extends BaseType {} 

class BaseClass<T extends BaseType> { 
    final T prop; 
    BaseClass(this.prop) { 
    // can be either BaseType or DerivedType 
    print(prop); 
    } 
} 

class DerivedClass<T extends BaseType> extends BaseClass<T /*not BaseType*/> { 
    DerivedClass(T /*not BaseType*/ prop) : super(prop); 
} 
+0

しかし何私ですが、私はあなたのコードを書くとき、私はBaseTypeから」不健全な暗黙のキャストは入力してもらいます"警告。 – Cequiel

+1

うまく動作するようですhttps://dartpad.dartlang.org/6bd56995edc0a0bf5d3387ec908f0a04 –

+0

あなたは正しいです。コードはちょっと複雑で、ちょっと混乱しました。 – Cequiel

関連する問題