问题标签 [sealed]

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 投票
4 回答
334 浏览

.net - 这个虚方法调用怎么比密封方法调用快?

我正在对虚拟成员与密封成员的性能进行一些修补。

下面是我的测试代码。

输出是

我一定是做错了什么,因为据此虚拟调用比密封调用更快。

我在“优化代码”打开的情况下以发布模式运行。

编辑:在 VS(作为控制台应用程序)之外运行时,时间接近死胡同。但虚拟几乎总是出现在前面。

0 投票
3 回答
1478 浏览

.net - 为什么我可以封装实现接口的类但不能封装成员?

给定这个界面

为什么这是有效的

但这不是

然而,对于抽象类来说,这是一个有效的场景

0 投票
2 回答
1989 浏览

java - 是否在 Java 中强制执行密封类,如果是,如何执行?

可以sealed在 Scala 中定义类,基本上final除非子类化发生在同一个文件中。

似乎 JVM 不允许final类字节码及其子类。

考虑到字节码中没有源文件的“概念”,这个限制是如何执行的?

因此,如何javac防止 Scalasealed类在 Java 中被子类化?

0 投票
1 回答
373 浏览

c++ - 密封类实现查询

我正在阅读http://www2.research.att.com/~bs/bs_faq2.html上的 C++ 常见问题解答,当我遇到此代码以实现“密封”类时:

我不明白如何通过使用 virtual 关键字来实现“密封”类效果。如果我删除 virtual 关键字,则它没有“密封”效果。为什么?

0 投票
6 回答
62217 浏览

c# - 什么是 C# 中的内部密封类?

我正在查看一些用于扩展 VS2010 中的语言支持的 C# 代码(Ook 示例)。我看到一些类叫做internal sealed class

这些有什么作用?有人会使用它们吗?

0 投票
6 回答
29409 浏览

c++ - 如何在 C++ 中定义密封类?

如何阻止类被其他类继承。

0 投票
5 回答
5816 浏览

c# - C#:在密封类中模拟和测试受保护(或私有)方法——方法

我有一个带有受保护方法的密封类,我想测试其行为。这使得很难直接测试,也很难模拟。

它位于不是以 TDD 方式开发的代码库中,我现在正在为特定功能添加单元测试。

在这种情况下,可能的一般方法是什么?目前我有:

  1. 让班级解封。然后在我们的测试代码中创建一个派生自该类的代理或适配器,以隧道访问受保护的方法。
  2. 将受保护方法中的行为分解为委托/函子,然后重新注入它。然后独立测试分解后的行为。
  3. 通过调用继承层次结构中使用受保护方法的最接近的公共方法进行测试。当被测代码以外的代码发生变化时,可能会导致大量的嘲笑和暴露风险——创建脆弱的测试。
  4. 使用反射来访问受保护的方法。然后直接调用。

还有吗?

0 投票
2 回答
1243 浏览

c# - 为什么没有列表密封?

看完这个问题的答案后想到了这个问题;这基本上表明List<T>没有虚拟方法,因为它被设计为“快速,不可扩展”。

如果这是设计目标,为什么最初的设计没有包括密封类?(我知道现在不可能,看看这会如何破坏客户端代码中的很多子类)

0 投票
1 回答
364 浏览

asp.net - 为什么 ASP.NET ListItem 类是密封的?

我只是好奇。为什么需要密封ASP.NET ListItem类?

0 投票
1 回答
305 浏览

c# - Why are attribute classes in Json.Net sealed?

Is there any spesific reason why e.g. Newtonsoft.Json.JsonIgnoreAttribute is a sealed class? The reason I ask is because I'd like to make wrapper around the Json.Net calls, so that the assembly ref is in one assembly only (makes updating the assembly and testing a bit easier).