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. 汎用コレクション
- 2. InvalidOperationException VB.Net汎用コレクション?
- 3. WCFの汎用コレクションのサポート
- 4. Java汎用コンストラクタ
- 5. WCF RESTサービス(汎用コレクションあり)
- 6. forループをループする汎用コレクション
- 7. Javaの汎用メソッド
- 8. Javaの汎用メソッド
- 9. javaの汎用オブジェクト
- 10. Java汎用テンプレート・エラー
- 11. 汎用インタフェース - Javaの
- 12. コレクション内に汎用コレクションを作成する
- 13. 汎用分散スケジューリングライブラリ(Java用)
- 14. Javaの汎用SOAPクライアント
- 15. Java - 汎用静的メソッド
- 16. Java汎用型とリフレクション
- 17. javaの汎用型のコンテナ
- 18. Java汎用メソッドの理解
- 19. Javaリフレクション:実装汎用インタフェース
- 20. VB.NETでXMLSerializerを使用して汎用コレクションをシリアライズ
- 21. MatlabのJava汎用クラスの使用
- 22. APIデザイン:1つの汎用インターフェースVS 3つの特殊インターフェース?
- 23. clang vs gcc - 空の汎用ラムダ可変引数パック
- 24. RESTful Spring3アプリケーションでのオブジェクトのコレクションの汎用戻りオブジェクト
- 25. 汎用コレクションに拡張メソッドを作成する方法
- 26. 要素を追加するためのシンプルな汎用コレクション
- 27. 配列または汎用コレクションですか?
- 28. SQL DataBaseテーブルから汎用コレクションへの読み取り
- 29. 抽象基本クラスのプロパティで汎用コレクションを使用できますか?
- 30. Java汎用クラスからクラスへ
あなたは財務会社で仕事をしているので、図書館を変更して数ヶ月の官僚的プロセスに直面する必要があるときには、そうです。そうです、より良い仕事をすべきです.... –