问题标签 [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.
c# - 当实现类被密封时覆盖单个接口方法
这可能是最容易用代码解释的(这当然不是实际代码,但它具有相同的属性):
我有一个看起来像这样的界面:
这有一个这样的实现:
现在其中一个调用,假设 GetFoo1 真的很重,所以我想提供一个新版本的接口,使用旧版本的实例缓存对它的调用。
我现在正在这样做:
这有两个问题(至少):
- 每次有人向接口添加方法时,我都必须更改它,即使我不希望缓存这个新方法
- 我得到了这个巨大的无用代码列表,它们只是调用底层实现。
谁能想到没有这些问题的方法?
c# - 为什么 PasswordBox 在 Silverlight 中被密封?
一个简单的问题,但谷歌对此没有答案!
我今天碰壁了,因为Silverlight 中的 PasswordBox是密封的。我不知道他们为什么这样做。有人对此有想法吗?
interop - 为什么必须密封 WinRT 类型?
在几个地方(例如MSDN 上的“为 JavaScript、C# 和 Visual Basic 创建 Windows 运行时组件”),我已经看到它指定,如果你在 .NET 中编写一个你想从 JavaScript 使用的类,那么你必须使其成为密封类。
这似乎是一个任意限制。为什么 JavaScript 只能用于密封类?
c++ - C++ 中的“ref”和“sealed”关键字是什么?
我刚刚看到一些(大概)C++ 代码,其中包含两个我不知道的“关键字”(我假设关键字,但由于我没有上下文,它们可能是简单的#define
东西)。
它们似乎也没有出现在 C++11 标准中,至少是我的草案,但是,因为这是一个相当晚的草案,我无法想象它们在最后一刻才被放入标准中。它们是ref
和sealed
。
我在其中找到它们的代码类似于:
有谁知道这些关键字是什么,以及它们的目的是什么?
c# - 如何拥有一个密封的构造函数?
我有一个具有公共构造函数的基类。
基类不是密封的,也不是抽象的。
我希望密封一个构造函数。这可能吗?
我当前的尝试导致语法错误,说构造函数不能被密封。
额外的:
我希望能够直接实例化基类并访问密封的构造函数。派生类不能通过派生构造函数使用该构造函数。例如
generics - 专业化通用密封类型。第1部分
假设我想要一个通用的抽象树类型,然后想要专门化它来创建特定类型的树。例如我可能有:
现在我想要一个为每个类添加“类型”字段的特定版本。因此,让我们介绍一个Typed
特征。
如何定义具有此特征的三个类 AST、BranchAST 和 LeafAST 的专用版本?
第一次尝试。使用 Scala 的类型成员特性。类型成员必须是某物的成员,因此对象定义
这给出了错误“涉及 TypedAST 类型的非法循环引用”。
第二次尝试。这次我开始一个新文件并放入
但是,这当然会给出错误“从密封类 AST 非法继承”,因为 TypedAST 扩展了在另一个文件中定义的密封类 AST。无论如何,我真的不想从 AST 继承;2 我想做的是专门化它。继承只是达到目的的手段。(顺便说一句,我不太确定密封的特征是否是我想要的。我将其设为特征而不是类的原因是 TypedLeafAST 需要同时扩展 TypedAST 和 LeafAST。)
我同时使用 Scala 2.9.1 和 2.9.2。
java - 在 IntelliJ 中密封 jar 文件
如何使用 IntelliJ idea 密封 jar 文件?
我相信它是用 jar cmf 命令制作的,但是如何在 IntelliJ 中实现呢?
c# - “密封类中的受保护成员”警告(单例类)
我已经实现了一个单例类,并不断收到警告说我正在编写的方法是“在密封类中声明的新受保护成员”。它不会影响构建,但我真的不想忽略警告,以防它在以后引起问题?我知道密封类是一个不能被继承的类 - 所以它的方法不能被覆盖,但我仍然不明白为什么下面的代码会给我警告(是因为使用了单例设计吗?):
编辑:警告是关于 MethodName() 方法的。编辑:将 public void MethodName() 更改为 protected void MethodName()
c++ - 检查成员是否存在,可能在基类中,VS2005/08 版本
在检查成员是否存在,可能在基类中,C++11 版本中,我们开发了 SFINAE 的经典成员检查类型特征的 C++11 版本,以检查也适用于 C++的继承的成员函数11 个final
类,但也使用 C++11 特性(即decltype
):
MSVC自 VS2005 起final
作为非标准扩展名,但仅在 VS2010 中添加。剩下的 VS2005 和 2008 中,标记为的类仍然破坏了经典的类型特征,并且不能使用 C++11 版本。sealed
decltype
sealed
那么,有没有办法制定has_resize_method
它也适用于 VC2005/08sealed
类?
显然,正如使用仅限 C++11 的功能来解决仅限 C++11 的final
问题sealed
(如果有一个适用于所有三组编译器 {C++11,{VS2005,VS2008},all others} 的解决方案,那会很酷,但可能要求太多了:)
c# - 为什么接口不能标记为密封?
给出“修改后的‘密封’对此项目无效”
我可以在某些方面理解接口必须是可继承的,否则类无法实现它。
但是为什么我不能指定一个接口不应该定义一个子接口,或者有没有办法,只是没有sealed
?
编辑
我应该努力解释为什么我想要这个。我经常看到开发人员应该使用组合的接口继承链。Sealed 非常适合在类中执行此操作,我想知道是否有办法对接口强制执行相同的操作。在我看来,由于不必要的继承使得重构和维护变得更加困难。
编辑 2
根据评论和帖子的反映,接口继承树不可能像对象继承树那样复杂。当您从另一个接口派生时,IX
您所说的只是“必须实现IX
”。阻止这种情况没有任何好处。