私は、多くの不変クラスを含むプロジェクトに取り組んでいます。これらのクラスを封印してマークすることに興味がありますが、後でクラスの「アンシール」を決めると、APIの顧客にランタイムエラーまたはコンパイルエラーが発生する可能性があります。この懸念に何かメリットはありますか、クラスを開封してランタイム/コンパイル時間の問題を起こさないでしょうか?クラスを開封すると、実行時またはコンパイル時にブレークが発生しますか?
1
A
答えて
4
クラスを開封しても、コンパイル時にエラーは発生しません。クラスを開封すると、以前はコンパイル不可能なコードをコンパイルできるようになりますが、その逆はできません。
ランタイムの問題が数多く発生する可能性がありますが、コンシューマーがタイプメタデータを検査する必要があるため、非常に稀ですと思います。たとえば、タイプが開封された場合にユーザーがスローすることは可能ですが、それが大きな懸念事項であるかどうかはわかりません。
0
更新されたバージョンのフレームワークでクラスからsealed属性を削除するだけで、クラスから派生させることができますが、以前はそうできませんでした。あなたの更新版では、クライアントがクラスから派生する必要がない限り、私は何の問題も考えられません。
クラスの開封のもう1つの効果は、ランタイムがいくつかの仮想関数呼び出しを最適化できないことですが、それでも問題は起こりません。
関連する問題
- 1. コンパイル時にエラーが発生しました - IncompatibleClassChangeError:クラスcom.google.firebase.auth.FirebaseAuth
- 2. モバイルアプリは、開封前/開封後にインストールとアップデート時にコードを実行できますか?
- 3. ドッカー実行の実行時にエラーが発生しました
- 4. コンパイル時にエラーが発生しました。私はアンドロイドアプリを実行しましたか?
- 5. 私のプログラムはコンパイルされましたが、実行時にこのエラーが発生しましたか?
- 6. コード実行時にApple Machエラーが発生しましたか?
- 7. java:実行時に継承するクラスをコンパイルします。
- 8. 開始時にSproutcore発行時にエラーが発生する
- 9. AsyncTaskの実行時に実行時例外が発生する
- 10. static_cast <T>(...)はコンパイル時または実行時ですか?
- 11. コード実行時にオブジェクトにエラーが発生しました
- 12. 実行時に例外が発生することを確認しますか?
- 13. アンドロイドプロジェクトの実行時にnetbeansエラーが発生しました
- 14. クライアントの実行時にjavax.naming.CommunicationExceptionが発生しました
- 15. Xamarin.iOS実行時にプロジェクトエラーが発生しました
- 16. テスト実行時にタイムアウトエラーが発生しました。キュウリ/ワットー
- 17. SSISパッケージ実行時にエラーが発生しました
- 18. コンパイル時にARCエラーが発生する
- 19. コンパイル時にエラーが発生する
- 20. スレッドはコンパイル時または実行時に決定されますか?
- 21. クラス定義が見つかりませんjarコマンド行実行時にエラーが発生しました。
- 22. gl_PointCoordはコンパイルとリンクを行いますが、実行時にクラッシュします
- 23. Integer.parseInt()の使用時に実行時エラーが発生しました
- 24. Qt - コンパイル時にエラー2が発生しました
- 25. コンパイル時にgrammar.yエラーが発生しました
- 26. コンパイル時にGeany、g ++、SDLエラーが発生しました
- 27. リアクションアンドロイドデバイスへのコンパイル時にネイティブのビルドエラーが発生しました
- 28. MongoDB C++ 11のコンパイル時にエラーが発生しました
- 29. webpackでのコンパイル時にTypeScriptエラーが発生しました
- 30. Androidアプリ実行時にjarファイルにエラーが発生します
Jon Skeetが継承のために設計されていないクラスの開封のアイデアについて不平を言っていないと、私は残念です。継承を念頭に置いてこれらのクラスを設計していない場合は、後で開封すると事態が崩れる可能性があります。継承のためにそれらを設計している場合、それらをシールする必要はありません。 – Brian
私はあなたがいたら簡単なテストをするでしょう:) – Grzenio
私はコンパイル時やランタイムのブレークを引き起こさなかった素早く簡単なテストを実行しましたが、反射のようなものは考慮しませんでした。回答)。それは私が心配していることですが、私はそれが壊れるかもしれないと考えていない巧妙なコードです。 私たちがクラスを開封する理由は....うまくいけません。私は、これが起こるべきかどうか、先の結果を知りたいと思います。 – JadeMason