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

c# - 当实现类被密封时覆盖单个接口方法

这可能是最容易用代码解释的(这当然不是实际代码,但它具有相同的属性):

我有一个看起来像这样的界面:

这有一个这样的实现:

现在其中一个调用,假设 GetFoo1 真的很重,所以我想提供一个新版本的接口,使用旧版本的实例缓存对它的调用。

我现在正在这样做:

这有两个问题(至少):

  • 每次有人向接口添加方法时,我都必须更改它,即使我不希望缓存这个新方法
  • 我得到了这个巨大的无用代码列表,它们只是调用底层实现。

谁能想到没有这些问题的方法?

0 投票
2 回答
543 浏览

c# - 为什么 PasswordBox 在 Silverlight 中被密封?

一个简单的问题,但谷歌对此没有答案!
我今天碰壁了,因为Silverlight 中的 PasswordBox是密封的。我不知道他们为什么这样做。有人对此有想法吗?

0 投票
1 回答
3723 浏览

interop - 为什么必须密封 WinRT 类型?

在几个地方(例如MSDN 上的“为 JavaScript、C# 和 Visual Basic 创建 Windows 运行时组件”),我已经看到它指定,如果你在 .NET 中编写一个你想从 JavaScript 使用的类,那么你必须使其成为密封类。

这似乎是一个任意限制。为什么 JavaScript 只能用于密封类?

0 投票
4 回答
11748 浏览

c++ - C++ 中的“ref”和“sealed”关键字是什么?

我刚刚看到一些(大概)C++ 代码,其中包含两个我不知道的“关键字”(我假设关键字,但由于我没有上下文,它们可能是简单的#define东西)。

它们似乎也没有出现在 C++11 标准中,至少是我的草案,但是,因为这是一个相当晚的草案,我无法想象它们在最后一刻才被放入标准中。它们是refsealed

我在其中找到它们的代码类似于:

有谁知道这些关键字是什么,以及它们的目的是什么?

0 投票
3 回答
5290 浏览

c# - 如何拥有一个密封的构造函数?

我有一个具有公共构造函数的基类。

基类不是密封的,也不是抽象的。

我希望密封一个构造函数。这可能吗?

我当前的尝试导致语法错误,说构造函数不能被密封。

额外的:

我希望能够直接实例化基类并访问密封的构造函数。派生类不能通过派生构造函数使用该构造函数。例如

0 投票
0 回答
842 浏览

generics - 专业化通用密封类型。第1部分

假设我想要一个通用的抽象树类型,然后想要专门化它来创建特定类型的树。例如我可能有:

现在我想要一个为每个类添加“类型”字段的特定版本。因此,让我们介绍一个Typed特征。

如何定义具有此特征的三个类 AST、BranchAST 和 LeafAST 的专用版本?

第一次尝试。使用 Scala 的类型成员特性。类型成员必须是某物的成员,因此对象定义

这给出了错误“涉及 TypedAST 类型的非法循环引用”。

第二次尝试。这次我开始一个新文件并放入

但是,这当然会给出错误“从密封类 AST 非法继承”,因为 TypedAST 扩展了在另一个文件中定义的密封类 AST。无论如何,我真的不想从 AST 继承;2 我想做的是专门化它。继承只是达到目的的手段。(顺便说一句,我不太确定密封的特征是否是我想要的。我将其设为特征而不是类的原因是 TypedLeafAST 需要同时扩展 TypedAST 和 LeafAST。)

我同时使用 Scala 2.9.1 和 2.9.2。

0 投票
1 回答
367 浏览

java - 在 IntelliJ 中密封 jar 文件

如何使用 IntelliJ idea 密封 jar 文件?

我相信它是用 jar cmf 命令制作的,但是如何在 IntelliJ 中实现呢?

0 投票
4 回答
5675 浏览

c# - “密封类中的受保护成员”警告(单例类)

我已经实现了一个单例类,并不断收到警告说我正在编写的方法是“在密封类中声明的新受保护成员”。它不会影响构建,但我真的不想忽略警告,以防它在以后引起问题?我知道密封类是一个不能被继承的类 - 所以它的方法不能被覆盖,但我仍然不明白为什么下面的代码会给我警告(是因为使用了单例设计吗?):

编辑:警告是关于 MethodName() 方法的。编辑:将 public void MethodName() 更改为 protected void MethodName()

0 投票
2 回答
918 浏览

c++ - 检查成员是否存在,可能在基类中,VS2005/08 版本

检查成员是否存在,可能在基类中,C++11 版本中,我们开发了 SFINAE 的经典成员检查类型特征的 C++11 版本,以检查也适用于 C++的继承的成员函数11 个final类,但也使用 C++11 特性(即decltype):

MSVC自 VS2005 起final作为非标准扩展名,但仅在 VS2010 中添加。剩下的 VS2005 和 2008 中,标记为的类仍然破坏了经典的类型特征,并且不能使用 C++11 版本。sealeddecltypesealed

那么,有没有办法制定has_resize_method它也适用于 VC2005/08sealed类?

显然,正如使用仅限 C++11 的功能来解决仅限 C++11 的final问题sealed(如果有一个适用于所有三组编译器 {C++11,{VS2005,VS2008},all others} 的解决方案,那会很酷,但可能要求太多了:)

0 投票
8 回答
5858 浏览

c# - 为什么接口不能标记为密封?

给出“修改后的‘密封’对此项目无效”

我可以在某些方面理解接口必须是可继承的,否则类无法实现它。

但是为什么我不能指定一个接口不应该定义一个子接口,或者有没有办法,只是没有sealed

编辑

我应该努力解释为什么我想要这个。我经常看到开发人员应该使用组合的接口继承链。Sealed 非常适合在类中执行此操作,我想知道是否有办法对接口强制执行相同的操作。在我看来,由于不必要的继承使得重构和维护变得更加困难。

编辑 2

根据评论和帖子的反映,接口继承树不可能像对象继承树那样复杂。当您从另一个接口派生时,IX您所说的只是“必须实现IX”。阻止这种情况没有任何好处。