..
SDKを見れば、実際のコレクションオブジェクトをまれに渡すことはほとんどありません。
その理由はあまり良い考えではないということです。コレクションは非常に保護されていません。
ほとんどの場合、コピーを渡してコピーを渡してコレクションに変更を加えても、それに依存している他のものの環境が変更されないようにする必要があります。また、スレッド化は悪夢になる - 同期化されたコレクションでさえも!
私は2つの解決法を見てきました.1つは常に配列を抽出して渡すことです。これは、SDKがそれを行う方法です。
もう1つは、親クラスのコレクションを常にラップすることです(拡張しないでカプセル化することを意味します)。私はこの習慣に慣れてきましたが、それは非常に価値があります。とにかくすべてのコレクションメソッドを複製しないので、実際には何の費用もかかりません(実際には複製することはめったにありません)。実際にあなたがやっているのは、コード全体に分散している他のクラスの「ユーティリティ」機能を、まず最初にあったはずのラッパークラスに移動することです。
"method(collection、...)"と一致するシグネチャを持つメソッドは、そのコレクションのメンバーメソッドである必要があります。コレクションを反復するループも同様です。
私はちょうどこれを捨てなければなりません。なぜなら、それは私がしばらくの間得られなかったものだからです(誰もコンセプトを擁護しなかったからです)。いつもそれはいくつかの欠点があるように見えるが、これをしばらくの間行って、それが解決した問題を見て、それを排除すると、私は自分自身の可能性のある欠点を想像することもできない。
'Map'が' Serializable'を実装していても、必ずしもそれがシリアル化可能であるとは限りません。しかし、はい、Javaの直列性はJavaの実行時の問題です。 –
残念なことにJavaの場合、これは正しい答えであり、トップになる価値があります。 – hythlodayr
あなたは私の答えの重要な部分を見逃しました...オブジェクトがSerializableのインスタンスであるかどうかをMapとTHENチェックに受け入れます。あなたはもちろんそれを逆にしても構いませんが、ユーザーが実際にどのような種類のコレクションを必要としているかわからないインターフェースを得ることができます。 – Fredrik