JavaのCollections.checked *()APIは、基本となるコレクションに型保証されたビューを提供します。しかし、チェックは実行時に行われ、実行時の例外がスローされるため、パフォーマンスにコストがかかる可能性があります。コンパイル時にジェネリックコレクションを使用して特定の型を指定することで、同じ型チェックを適用することができます。 Collections.checked *()は、タイプが指定されたジェネリックコレクションをスコアリングする状況がありますか?Java Collections.checked *()vs汎用コレクション
5
A
答えて
10
javadocはそれをうまく説明:
言語でのジェネリックメカニズムは、コンパイル時(静的)型チェックを提供していますが、未チェックのキャストでこのメカニズムを打ち負かすことが可能です。コンパイラはチェックされていないすべての操作について警告を出すので、通常これは問題ではありません。しかし、静的型検査のみでは不十分な場合があります。たとえば、コレクションがサードパーティのライブラリに渡され、間違った型の要素を挿入することによってライブラリコードがコレクションを破損しないようにする必要があるとします。
0
新しい1.5+プロジェクトで未チェックのタイプの古いライブラリを使用している場合。
5
主な違いは、誤って意識的にコンパイル時のチェックを簡単に回避できることです。
コンパイラは警告が表示されますが、警告が簡単に無視され、ライブラリのどこかで問題が発生する可能性があります。ジェネリックによって提供される型情報は、という信頼性がありますが、関連するすべてのコードがジェネリックに関する警告なしでコンパイルされる場合は、のみがコンパイルされます。
Collections.checked*()
を使用すると、独自のコレクションを渡すことができる限り、コントロールの外にあるコードを使用する場合でも、制限を適用することができます。
1
Collectons.checkedXxxxx()は、ランタイムチェックを実行するため、安全性が向上します。コンパイラは型の削除を使用することで回避できますが、チェックされたコレクションは型が正しいことを常に確認する必要があります。
私はパフォーマンスの違いを気にするのには間違いがあります。約10ns以下になる可能性があります。
関連する問題
- 1. コレクションに@NonNullを持つJava汎用コレクション
- 2. 汎用コレクション
- 3. InvalidOperationException VB.Net汎用コレクション?
- 4. JSON汎用コレクションのデシリアライズ
- 5. クラスインスタンスVSインターフェイスVS汎用オブジェクト - パフォーマンス
- 6. コレクションの汎用戻り型
- 7. コレクションの汎用型サブコレクション
- 8. WCFの汎用コレクションのサポート
- 9. Java汎用コンストラクタ
- 10. Javaの汎用、汎用関数
- 11. forループをループする汎用コレクション
- 12. WCF RESTサービス(汎用コレクションあり)
- 13. AWS RDS MySQL - 汎用SSD VS磁気
- 14. javaの汎用オブジェクト
- 15. Javaの汎用メソッド
- 16. Java汎用テンプレート・エラー
- 17. 汎用インタフェース - Javaの
- 18. Javaの汎用ArrayList
- 19. Javaの汎用リンクリスト
- 20. Javaは汎用型
- 21. Javaの汎用メソッド
- 22. Javaの汎用addListener
- 23. コレクション内に汎用コレクションを作成する
- 24. 汎用分散スケジューリングライブラリ(Java用)
- 25. Java汎用メソッドの理解
- 26. javaの汎用型のコンテナ
- 27. Javaを渡す汎用オブジェクト
- 28. Javaの汎用SOAPクライアント
- 29. Java 8ラムダ汎用インターフェースメソッド
- 30. Jackson Javaの汎用パラメータ
あなたは財務会社で仕事をしているので、図書館を変更して数ヶ月の官僚的プロセスに直面する必要があるときには、そうです。そうです、より良い仕事をすべきです.... –