问题标签 [sealed-class]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kotlin - 如何覆盖密封类字段?
我在我的服务中创建了一个自定义结果字段(而不是 Kotlin 的结果),因此我可以在成功和失败案例中返回一个消息字段:
然后在另一个类中,我调用了一个产生此结果的方法并希望记录 Result.message
只是,kotlin 编译器无法识别“消息”,因为它不是 Result 的直接属性,而是 Success 和 Failure 的属性。
我试图覆盖消息字段并在 Result 类中定义它。但我得到一个错误。
那么,如何在不将结果实例强制转换为它的派生实现类(成功或失败)的情况下访问 Result.message 呢?
android - 由于对象引用,MockK verifySequence 无法正常工作
我经常使用一个状态类(一个密封类)来控制我的屏幕状态(比如成功、错误和加载)。所以我会有类似的东西:
现在,在某个类上,我有一个具有此值的属性,在某个流程中,我将其设置为 Loading,然后设置为 Error。这我可以检查这是否是这个属性被设置的顺序,verifySequence
如下所示:
现在假设我的密封类内部有类而不是对象,并且有点复杂,如下所示:
当我尝试检查顺序时,我的测试失败了,因为我正在使用类并且 MockK 通过引用做出断言:
知道如何检查这个序列吗?
flutter - 如何在当前 Dart 中编码代数数据类型?
如何对 Dart 中当前的代数数据类型进行编码?
代数数据类型也称为:
问题是,我如何在当前的 Dart / Flutter 中实现它,因为对它的支持还没有得到支持(参见 issue #349)?
网上解释了一些方法,例如我找到了match
图书馆,sealed_unions
图书馆,if-else
方法,以及一些更棘手的技术。
但我真的很喜欢关于选择什么以及你为什么选择它的更多专家意见。想法?
android - Android Studio 无法识别密封类的 when 语句是详尽无遗的
我有一个名为的简单结果类Outcome
,它是密封的,由三个子类组成Waiting
:Success
和Failure
:
现在我想使用一个when
语句来检查泛型Outcome
是哪种类型,但是 Android Studio(特别是 Android Studio,IntelliJ IDEA 没有这个问题)似乎认为它并不详尽并给出警告:
建议密封类上的 'when' 表达式是详尽的,添加 'is Failure'、'is Success'、'Waiting' 分支或 'else' 分支
但是when
绝对是详尽的:
即使我要求添加剩余的分支,它也只是添加了我已经拥有的内容的副本,并且仍然产生相同的错误:
这不是一个大问题,因为它只是一个警告,不会导致任何实际问题。但是我想知道这是否是一个推理错误,或者它是否与我的设计有关。
注意:我的 Android Studio 插件版本是 1.4.32-release-Studio4.1-1,我已经用一个全新的项目进行了尝试,并得到了相同的结果。
android - 检查 Kotlin 中密封类的所有子类
我有一个包含球作为对象的密封类,用于台球游戏。在代码的其他地方,我使用了 BallType,它是一个枚举类。我希望能够在需要时通过提供球类型来获取球对象。有没有办法做到这一点?
kotlin - 是否可以组成两个密封类?
我有两个不同的 Kotlin 密封类的图像。
是否可以定义包含水果和蔬菜的类型?就像是Produce = Fruit | Vegetable
这样你就可以写出类似的东西
android - 如何使用协程在 ViewModel 中正确实现 Result.Success 和 Result.failure?
我有视图模型,我通过以下方式得到响应
但我想添加 Result.Success 逻辑如果我会成功,如果它是错误 Result.Error 使用密封类
在我的存储库类下面
在我的 getResponse 下面
在我的响应类下面
以下结果密封类
android - 类型不匹配。必需:结果>!发现:成功
如果我得到正确的响应,我已经实现了密封类如果错误 Result.Error,我将得到 Result.Success
在我实现该逻辑的 ViewModel 下方
在我的密封类结果之下
但是当我运行项目时出现以下错误
类型不匹配。必需:结果<列表>!发现:成功
java - 如何以及何时在 Java 中使用 Kotlin 密封类?
考虑到误用密封类,我们来看看下面的设计。
有两个模块:
parser
(Kotlin) - 负责从 String 创建实例processor
(Java) - 将原始传入数据泵入强类型存储(即关系表)
- 字符串来自外部源
processor
processor
将其认可委托给parser
parser
[Banana, Nail, Shoe]
根据一些创建不同类型的实例rules X
processor
根据某些情况将每个实例持久保存到适当的表中rules Y
在基于每个实例的具体类型做出决策时parser
,是否适合在这里使用密封类?processor
我发现这种方法有问题,因为越来越多的 Item 子类可能会导致设计灾难,但无法弄清楚是否存在与此完全不同的密封类的“规范”用例。
什么是密封类适用性的限制,当系统设计者应该更喜欢“较少类型”的东西时,如下所示:
java - 不同包中的类的密封类
如果我声明遵循密封的层次结构
不使用模块(没有module-info.java)并尝试用Maven编译它我得到
我知道https://openjdk.java.net/jeps/409和本节:
permit 指定的类必须位于超类附近:在同一个模块中(如果超类在命名模块中)或在同一个包中(如果超类在未命名模块中)。
但是,默认情况下 Maven 不应该在编译时使用类路径吗?可以完全避免这种限制吗?
如果不是,这是否开创了一个先例,模块路径上的功能比类路径上的功能更灵活,反过来 - 虽然仍然支持类路径,但与模块路径相比,它不像以前那样是一等公民?