2016-06-14 179 views
1

這是否是正確的方式來聲明擴展Dart中另一個「泛型類」的「泛型類」?請注意,通用參數具有類型限制。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