問題タブ [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.
.net - この仮想メソッド呼び出しは、封印されたメソッド呼び出しよりもどのように高速ですか?
仮想メンバーと封印されたメンバーのパフォーマンスをいじくり回しています。
以下は私のテストコードです。
出力は
これによると、仮想呼び出しは封印された呼び出しよりも速いので、私は何か間違ったことをしているに違いありません。
「コードの最適化」をオンにしてリリースモードで実行しています。
編集:VSの外部で(コンソールアプリとして)実行している場合、時間は猛暑に近づいています。しかし、ほとんどの場合、仮想は前面に出てきます。
.net - インターフェイスを実装するクラスを封印できるのに、メンバーを封印できないのはなぜですか?
このインターフェースを考えると
これが有効な理由
しかし、これはそうではありません
それでも、それは抽象クラスの有効なシナリオです
java - シール クラスは Java で強制されますか? はいの場合、その方法は?
サブクラス化が同じファイルで行われる場合を除いて、sealed
基本的に Scala でクラスを定義することは可能です。final
final
JVM は、クラスのバイトコードとそのサブクラスを許可していないようです。
バイトコードにソース ファイルの「概念」がないことを考えると、この制限はどのように適用されますか?
javac
では、Scalasealed
クラスが Java でサブクラス化されないようにするにはどうすればよいでしょうか?
c++ - 封印されたクラスの実装クエリ
「封印された」クラスを実装するためにこのコードに出くわしたとき、私はhttp://www2.research.att.com/~bs/bs_faq2.htmlでC++ のよくある質問を読んでいました。
virtual キーワードを使用することで、「封印された」クラス効果がどのように達成されるかがわかりませんでした。virtual キーワードを削除すると、「封印」効果はありません。なんで?
c# - C#の内部シールクラスとは何ですか?
VS2010で言語サポートを拡張するためのC#コードを調べていました(Ookの例)。私はと呼ばれるいくつかのクラスを見ましたinternal sealed class
これらは何をしますか?それらを使用しますか?
c++ - C ++で封印されたクラスを定義する方法は?
他のクラスに継承されるクラスを停止する方法。
c# - C#: シールされたクラスの保護された (またはプライベートな) メソッドのモックとテスト -- アプローチ
動作をテストしたい保護されたメソッドを持つシールされたクラスがあります。これにより、直接テストすることも、モックすることも難しくなります。
これは、TDD 方式で開発されていないコードベースにあり、現在、特定の機能の単体テストを追加しています。
この場合、可能な一般的なアプローチは何ですか? 現時点で私は持っています:
- クラスをアンシールします。次に、テスト コード内のクラスから派生したプロキシまたはアダプターを作成して、保護されたメソッドへのアクセスをトンネリングします。
- 保護されたメソッドの動作をデリゲート/ファンクターに分解し、再注入します。次に、除外された動作を個別にテストします。
- 保護されたメソッドを使用する継承階層で最も近いパブリック メソッドを呼び出してテストします。多くのモッキングにつながる可能性があり、テスト対象のコード以外のコードが変更されたときにリスクにさらされる可能性があり、脆弱なテストが作成されます。
- リフレクションを使用して、保護されたメソッドにアクセスします。次に、直接呼び出します。
もうありますか?
c# - リストがない理由封印?
この質問への回答を読んだ後、この質問が頭に浮かびました。List<T>
「高速で拡張可能ではない」ように設計されているため、 基本的に仮想メソッドがないことを指摘しました。
それが設計目標である場合、クラスを封印することを含む元の設計はなぜ行われなかったのですか? (それがクライアント コード内の多くの子クラスをどのように壊すかを見て、今はそれが不可能であることを知っています)
asp.net - ASP.NET ListItem クラスが封印されているのはなぜですか?
私はただ興味があります。ASP.NET ListItemクラスをシールする必要があるのはなぜですか?
c# - Json.Netの属性クラスが封印されているのはなぜですか?
たとえば Newtonsoft.Json.JsonIgnoreAttribute がシール クラスである特定の理由はありますか? 私が尋ねる理由は、Json.Net 呼び出しのラッパーを作成して、アセンブリ ref が 1 つのアセンブリのみになるようにしたいからです (アセンブリの更新とテストが少し簡単になります)。