Java 什么';s使用'State<;T扩展StatefulWidget>`
我查看了dart的文档,查找泛型Java 什么';s使用'State<;T扩展StatefulWidget>`,java,oop,dart,flutter,Java,Oop,Dart,Flutter,我查看了dart的文档,查找泛型 abstract class StringCache { String getByKey(String key); void setByKey(String key, String value); } abstract class ObjectCache { Object getByKey(String key); void setByKey(String key, Object value); } 上面两个被一个带有以下代码的泛型类型T替换
abstract class StringCache {
String getByKey(String key);
void setByKey(String key, String value);
}
abstract class ObjectCache {
Object getByKey(String key);
void setByKey(String key, Object value);
}
上面两个被一个带有以下代码的泛型类型T替换
abstract class Cache<T> {
T getByKey(String key);
void setByKey(String key, T value);
}
T
是一个通用类型参数,而extends StatefulWidget
是可以设置为什么类型的约束
与
从
\u countstate
引用Counter
中的字段foo
,您将获得自动完成和静态类型检查。我不是java人,但在C语言中,泛型中有一种称为约束的东西<代码>状态看起来很像我。这意味着State
只能接受StatefulWidget
或从StatefulWidget
继承/扩展的T
s。从您的代码来看,State
中的Counter
似乎是从StatefulWidget
类型继承/扩展而来的。由于没有类型为T
的字段,也没有输出为T
的方法或带有T
的参数,您能否帮助了解T
是如何注入状态的。我不知道State类在哪里注入/使用了它。State
不必有任何字段或方法来处理T
。在使用T方法的特定属性时,它可能具有内部逻辑。当您有T extends StatefulWidget
约束时,State
类可以访问StatefulWidget
类型的所有方法、属性和事件。如果你能分享State
类的代码,我可以指出这一点。
class _CounterState extends State<Counter> {
int _counter = 0;
void _increment() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Row(
children: <Widget>[
RaisedButton(
onPressed: _increment,
child: Text('Increment'),
),
Text('Count: $_counter'),
],
);
}
}
class _CounterState extends State<Counter> {
widget.foo