我在User
类构造函数中包含一个枚举。类中的该字段在新实例中为空。
我直接设置了枚举值。之后我打印类字段。它是空的。
enum Genders {
MALE,
FEMALE,
OTHER
}
class User extends SharedUser {
User(
String firstName,
Genders gender,
) : super (firstName: firstName);
Genders gender;
}
final User user = User(
'Bob',
Genders.OTHER
);
print(user.firstName); // Bob
print(user.gender); // null
预期:user.gender打印Genders.OTHER
实际:user.gender打印为空
Dart不会神奇地将参数构造函数分配给类字段。您必须自己指定这样的行为。
因此,您的用户构造函数应该变成:
User(String firstName, this.gender): super(firstName: firstName);
我正在为即将到来的考试做一些修订,我对对象构造函数中枚举的使用有点困惑。
问题内容: 这来自有效的Java: 请注意,操作常量是从创建常量之后运行的静态块放入stringToEnum映射中的。试图使每个常量从其自己的构造函数中放入映射中将导致编译错误。这是一件好事,因为如果合法,它将导致NullPointerException。除编译时常量字段外,不允许枚举构造函数访问枚举的静态字段。此限制是必需的,因为在构造函数运行时尚未初始化这些静态字段。 我的问题是关于这条线的:
问题内容: 目前,我们的代码存在一种情况,即我们在Java层中使用枚举,该枚举通过以下构造函数存储id和“显示值”: 我们希望打字稿中的某些内容能够与之匹配,以便以有意义的方式显示状态以执行逻辑并在前端向用户显示值。这可能吗?有没有更好的方法来解决这个问题?我们希望避免使用诸如status.id()= 1或status.name()=’Active’这样的逻辑,从而推动枚举。 谢谢 问题答案: T
我不确定我是否过度工程化了,但我正在考虑创建一个枚举,其中包含一个枚举列表作为它的值,从中我可以得到它的值。 我无法确定枚举的类型,以便正确地将值数组筛选到正确的枚举。例如,我可以用轻松地获得US枚举。我遇到的困难是从该数组中获得正确的值。我尝试比较名称,
或修饰符不允许与构造函数一起使用。为什么?我试过阅读标准文档,但没有很好地理解它。
问题内容: 由于枚举构造函数只能由其常量调用,因此为什么要允许它成为包私有的? 问题答案: 构造函数实际上不是包私有的…隐式地意味着接口方法是隐式的,即使您不添加关键字也是如此。 JLS(第8.8.3节)的相关部分规定: 如果没有为普通类的构造函数指定访问修饰符,则该构造函数具有默认访问权限。 如果没有为枚举类型的构造函数指定访问修饰符,则构造函数为。 如果枚举类型(第8.9节)的构造函数声明为或