问题标签 [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.

0 投票
3 回答
97 浏览

kotlin - 密封类泛型

我有这种情况,我有一个超级抽象类,它使用 Kotlin 发出不同类型的事件sealed classes

这些事件建模如下。

这是发出这些事件的类

在这里,它只适用于子类,我可以在它们LegacyEventAdvancedEvent它们的关联类中发出任何事件。但是,对于BaseBaskan该类,我不能从 中发出事件,BaseEvent尽管我声明泛型类型E必须扩展BaseEvent.

我需要每个子类都可以访问自己的事件以及超类事件,但不能访问其他子类的事件。

我怎样才能仍然从BaseEvent基类中发出事件,同时让每个类只能发出自己的事件?

0 投票
1 回答
99 浏览

kotlin - 密封类扩展了其他密封类

我在使用 MVI 模式时制作各种状态模型和副作用类。状态模型可以通过扩展收集公共部分的接口来减少样板,但是副作用类不支持扩展,因为它是一个密封类。所以我将 Toast 的副作用视为样板代码。我怎样才能摆脱这个 Toast 副作用样板代码?密封类有没有办法扩展到其他密封类?

我的州课:

我的副作用类:

0 投票
0 回答
21 浏览

dart - 我们如何在 dart 中创建不可扩展的类

在 Java 中,我们知道创建密封类。如果我们将 final 与类一起使用,则没有人可以扩展此类。在 Dart 中没有任何选择。我们可以扩展每个类。如果我们扩展每个类,那么我们怎么不能扩展 Dart 内置的类呢?

0 投票
1 回答
45 浏览

android - 访问android kotlin中密封类的嵌套级别

我有一个密封类

我的事件.kt

我叫密封类

我正在尝试将事件接收为

我无法访问接收部分中的名称。当嵌套级别存在时如何正确执行此操作?

0 投票
1 回答
98 浏览

kotlin - 在密封类中为抽象 val 赋值

我有一个密封类,几个抽象类从中继承。由于密封类中有一堆字段需要在抽象类中初始化,我试图将其移至辅助构造函数,但是辅助构造函数不允许我们声明override val字段以使代码更简洁。我能想到的唯一另一种方法是制作字段lateinit var,但随后我失去了不变性。

有没有办法让这段代码更干净或有任何其他建议可以在这种情况下提供帮助?

0 投票
1 回答
41 浏览

kotlin - 用多个扩展密封类替换枚举

目前我有三个枚举类代表我的状态机中的状态和一个显示操作

在我的服务中,我有:

我想将我当前的实现更改为密封类。我试过类似的东西:

但它不起作用......

有没有办法使用密封类来知道当前的 OperationStatus 是什么而不将 State 映射到它?

0 投票
1 回答
177 浏览

open-closed-principle - Java 17 中的密封类,以及开闭原则

在 LTS 版本的 Java (Java 17) 中,我们第一次有了sealed关键字,简而言之,我们可以限制层次结构:

如果我想创建一个扩展Person基类的新子类,我也必须修改基类。这是否违反了开闭原则?

0 投票
0 回答
57 浏览

android - 在 kotlin 中处理密封类属性的正确方法

嘿,我正在使用 Android Kotlin。我正在从 Android 文档学习这个LatestNewsUiState密封类示例。我做了我自己的sealed class例子。但我有点困惑,我怎么能做到这一点。我是否适合我的场景?

数据状态.kt

视图模型.kt

活动.kt

我有一些我想以标准方式实现的点。

1.当你第一次调用api时fetchData(),如果数据不为或为,那么我们需要显示视图。如果数据为或为,那么我们需要隐藏视图。但是如果 api失败,那么我们需要显示一条错误消息

2.当视图可见并且视图显示一些数据时。然后我们调用另一个 apifetchMoreData()并且数据为null然后我不想按照上面编写的代码隐藏视图。如果 api失败,那么我们会显示错误消息

提前致谢

0 投票
1 回答
34 浏览

android - 类型不匹配。必需:结果!找到:结果>?

我正在开发 android 应用程序,我已经在 viemodel 类中实现了成功和失败案例,但我得到以下不匹配类型不匹配。要求:结果!找到:结果<响应>

在我的 NewsViewModel 下面,我在获取数据时实现了成功和失败案例

在我的 NewsRepository.ktclass 下面

在我的 Result 类下面

我想知道我到底在哪里犯了错误我必须做什么才能解决这个问题

在我的新闻界面下方

导入 com.example.newsworldwide.model.NewsResponse 导入 retrofit2.Response 导入 retrofit2.http.GET 接口 NewsInterface {

}

0 投票
1 回答
29 浏览

functional-programming - 表示所有扩展“基本”记录的总和类型的想法的规范方法

我是 PureScript 的新手。我在 Purescript 中搜索密封类以了解如何实现这一点,但我认为我还没有必要的 PS 术语。

PureScript 中拥有一堆扩展“基本”记录的记录的规范方式是什么,但随后有一个总和类型表示这些记录的“密封”集合。

就像在 Kotlin 中一样,

在 TypeScript 中,你可能会做类似的事情

本质上,我想要一个基类(在技术上是抽象的),扩展它的东西,然后是扩展的总和类型/可区分联合,这样我就可以写,说,changeName:: Glazing -> Glazing(前提是基类有一个name道具)但是也可以做类似的事情calculateTotalLightPenetration :: Array Glazing -> Number(前提是有区别的联合是其中之一,Door或者Window因为光穿透将是门与窗的不同公式)