Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么';s使用'State<;T扩展StatefulWidget>`_Java_Oop_Dart_Flutter - Fatal编程技术网

Java 什么';s使用'State<;T扩展StatefulWidget>`

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替换

我查看了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 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