我想創建一個只接受 Lists 作為型別引數的泛型類。但我也想要串列的型別引數。像這樣的東西:
class MyClass<L extends List<T>> {
T foo() {
// ....
}
}
問題是那行不通。未找到 T。但這確實:
class MyClass<L extends List<T>, T> {
T foo() {
// ....
}
}
我唯一的問題是我必須始終傳入應該從 List 型別推斷的額外引數 T 。
var instance = MyClass<List<int>>();
var instance = MyClass<List<int>, int>(); // Extra int kind of redundant
有什么解決方法嗎?
uj5u.com熱心網友回復:
解決方案類似于這個問題中提供的解決方案(同樣的問題,但在 Java 中):基本上,你不能在 Dart 中做到這一點。你能做的是
- 創建一個新的子類:
class MyClass2<T> extends MyClass<List<T>, T> { ... }
或者
- 創建工廠方法:
class MyClass<L extends List<T>, T> {
static MyClass<List<T>, T> fromList<T>(List<T> list) {
return MyClass(...);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/369375.html
標籤:镖
