は、それはいくつかのリストが固定サイズであるかどうかを調べることはできますか?
理論上 - いいえ。固定サイズは、リストクラスの実装の緊急の特性です。要素を追加しようとすると、リストにそのプロパティがあるかどうかだけを判断できます。
単純な動作テストでは、固定サイズのリストと制限付きリストまたは永続的にあったリスト、または一時的にの読み取り専用を確実に区別できないことに注意してください。実際に
、固定サイズのリストは通常は通常のものと異なるクラスを持つことになります。オブジェクトのクラスをテストして、それが特定のクラスであるかどうかを調べることができます。したがって、のクラスがの固定サイズのリストをコードベースに実装するのに使用されるクラスを理解していれば、特定のリストが固定サイズかどうかをテストできます。
たとえば、Arrays.asList(...)
メソッドは、実際のクラスがjava.util.Arrays.ArrayList
のList
オブジェクトを返します。これはプライベートネストされたクラスですが、リフレクションを使用して見つけてObject.getClass().equals(...)
を使用してテストしてください。
しかし、このアプローチは脆弱です。 Arrays
の実装が変更された場合や、他の形式の固定サイズのリストを使用した場合でも、コードが壊れる可能性があります。例えばnew ArrayList()
ためにより作成された一つが囲みクラスを持っていないであろうしながら
List<String> list = Arrays.asList(array);
によってString[]
から作成
例外を使用できないのはなぜですか? @RC。 –
彼はそれができないと言わなかったが、それを行う別の方法があれば理想的ではない。例外は遅く、例外的な条件です。 – Michael
有権者を閉じるには、これがどのように不明であるか説明してください。私は彼が求めていることを完全に理解しています。 – Michael