【问题标题】:Why Static field can't be accessed through an instance为什么不能通过实例访问静态字段
【发布时间】:2019-12-26 03:44:54
【问题描述】:

为什么不能通过实例访问静态字段。 Dart 2.4 Flutter 1.7 Android Studio 3.4

当我尝试将代码从 JAVA 移植到 Flutter(Dart) 时,出现编译错误

我在 MyMainBloc 中定义了如下变量

static LoginStatus loginStatus = null;

然后我创建一个实例:

MyMainBloc myApp;

我希望使用这样的东西:myApp.loginStatus,而不是 MyMainBloc.loginStatus。

【问题讨论】:

  • 给定SomeClass objectobject 的类型是静态已知的,所以object.someStaticMember 可以被视为SomeClass.someStaticMember 的语法糖。也就是说,Dart 1 没有静态类型,所以这可能是该语言不允许它的原因之一。

标签: flutter dart


【解决方案1】:

在类级别而不是对象级别访问特定类的静态成员。这基本上意味着静态变量在对象之间共享。

考虑到这一点,您可能尝试做的事情可能不是最好的主意。在没有看到更多代码的情况下,您最好将 loginStatus 属性声明为封装类的私有成员,然后通过方法(可能是标准的 get*() 方法)访问该成员。

班级成员的Oracle documentation 在这里可能会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 2021-10-01
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 2010-10-01
    相关资源
    最近更新 更多