问题标签 [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 投票
1 回答
60 浏览

kotlin - 当抽象类的构造函数在 kotlin 中是私有的时会发生什么?

我不明白当抽象类的构造函数在 Kotlin 中是私有的时会发生什么。在这个例子中,我使用了一个密封类,默认情况下它有一个私有构造函数。但是,我可以从子类调用私有构造函数。

当您想使用构造函数实例化类时,不允许调用私有构造函数。但是,如果类是抽象的,那么构造函数是私有的还是公有的都没有关系,因为无法实例化该类。

你能澄清一下在抽象类上有一个私有构造函数是什么意思吗?

0 投票
3 回答
1543 浏览

c# - 在 C# 中,是否可以模拟 IMessageReceiver 和相关类进行单元测试?

我有以下课程,我希望为其创建单元测试:

可以看出,它依赖于Microsoft.Azure.ServiceBus.Core.IMessageReceiver.

我第一次尝试模拟这个是使用Moq. 我本来希望如果我创建一个new Mock<IMessageReceiver>(),我应该能够将它注入到public ServiceBusClient(IMessageReceiver messageReceiver, int maximumMessages)中,但是编译器告诉我“错误 CS1503 参数 1:无法从 'Moq.Mock<Microsoft.Azure.ServiceBus.Core.IMessageReceiver>' 转换为'Microsoft.Azure.ServiceBus.Core.IMessageReceiver"....

然后我想我会尝试手动模拟这个类:

这将允许我成功提供消息,除了我提供的消息不包括 SystemProperties,因此 ServiceBusClient 将在lockTokens.Add(message.SystemProperties.LockToken).

事实证明,该Microsoft.Azure.ServiceBus.Message实现不提供 setter for public SystemPropertiesCollection SystemProperties,因此要设置它(除非有人有更好的方法),我需要创建自己的 Message 实现:

现在,我可以初始化 SystemPropertiesCollection,但问题是 SystemPropertiesCollection 中没有任何属性实际上包含设置,所以我的测试仍然会失败。

然后我想:让我们为“SystemPropertiesCollection”创建一个模拟(不要介意我们开始在“太多模拟”的危险水域中游泳......但是当我尝试扩展这个类时,我的编译器抱怨因为 SystemPropertiesCollection 是实际上是一个密封类,所以我不能扩展它。

所以,现在我回到第一方。

有什么想法可以为 ServiceBusClient 创建好的单元测试吗?

0 投票
1 回答
203 浏览

android - 使用 rxjava 中的密封类处理 api 响应

我想使用密封类处理 api 响应

我的 api 正常工作

当我将我的 api 更新为

无法调用没有参数的私有 com.utils.Result()

我怎样才能实现响应

在哪里订阅OnIO

0 投票
2 回答
241 浏览

kotlin - 相同类的 Kotlin 密封类

KorGE 游戏库示例游戏 (CounterStrike) 具有以下构造:

我正在努力理解结果(整体)对象实际上是什么。结果对象实际上占用了七个 SideEffect 类的空间,还是一个?(或者,如果除了名称之外所有类都相同,这是一个棘手的问题)?

0 投票
0 回答
107 浏览

kotlin - 我需要一个嵌套的密封类吗?

在我的示例密封类方面需要帮助

我希望能够将 Int 或 String 分配给id。我需要另一个密封类吗?

所以我可以像使用它一样

0 投票
4 回答
3300 浏览

java - 用非密封类扩展密封类有什么意义?

我真的不明白为什么non-sealed在 JEP 360/Java 15 中有一个关键字。对我来说,密封类的扩展应该只是 final 或密封类本身。

提供“非密封”关键字将邀请开发人员进行黑客攻击。为什么我们允许将密封类扩展到非密封类?

0 投票
2 回答
617 浏览

android - Firebase:如何检查文档写入是否成功

我想检查我的数据库写入是否成功,以便向用户显示错误消息。

我目前的方法不起作用,因为它说“类型不匹配,找到所需的单元 EmailStatus”

目前的方法

状态密封类

甚至可以写这样的东西吗?据我所知,有一个通用的firebase error type,但我没有发现任何与 kotlin 或 android 相关的东西......

我感谢每一个帮助,谢谢

编辑

我已经尝试获取我的文档,但我只是得到空值:(当我使用侦听器方法时,一切正常)

界面

接口实现

视图模型

0 投票
1 回答
301 浏览

java - JDK 15 Sealed Classes - 如何跨包使用?

我有一个简单的密封类,MyShape

还有一个简单的子类MyCircle

当两个类都在同一个包中时,一切都可以编译和工作。如果我将 MyCircle 移动到子包中,则构建会中断:java: class is not allowed to extend sealed class: org.example.MyShape

我对JDK 15 文档的理解是这应该有效。我错过了一步吗?

如果您想进行实验,我已经创建了一个 GitHub 存储库。

0 投票
2 回答
869 浏览

java - Java 15 的密封类功能中的最终类和非密封类有什么区别?

我有以下密封接口(Java 15):

该接口由 2 个类实现:

谁能告诉我和之间的final区别non-sealedfinal阻止我创建其他子类,但non-sealed适用于什么行为Duck

0 投票
1 回答
802 浏览

java - Java中密封类和最终类之间的区别

我刚刚读到 Java 15 应该有sealed类。 jep360说:

密封的类和接口限制了哪些其他类或接口可以扩展或实现它们。

我认为这正是 afinal class在 Java 中所做的。final class所以现在我想知道: a和 a 有什么区别sealed class