Collections.unmodifiableList の実装では、指定されたリストが既に UnmodifiableList であっても、常に UnmodifiableList で指定されたリストをラップしていることがわかります... したがって、このメソッドを何度も呼び出すと、次のような巨大なスタック トレースが得られます。
at java.util.Collections$UnmodifiableCollection.size(Collections.java:998)
at java.util.Collections$UnmodifiableCollection.size(Collections.java:998)
at java.util.Collections$UnmodifiableCollection.size(Collections.java:998)
at java.util.Collections$UnmodifiableCollection.size(Collections.java:998)
at java.util.Collections$UnmodifiableCollection.size(Collections.java:998)
at java.util.Collections$UnmodifiableCollection.size(Collections.java:998)
at java.util.Collections$UnmodifiableCollection.size(Collections.java:998)
at java.util.Collections$UnmodifiableCollection.size(Collections.java:998)
at java.util.Collections$UnmodifiableCollection.size(Collections.java:998)
at java.util.Collections$UnmodifiableCollection.size(Collections.java:998)
at java.util.Collections$UnmodifiableCollection.size(Collections.java:998)
at java.util.Collections$UnmodifiableCollection.size(Collections.java:998)
at java.util.Collections$UnmodifiableCollection.size(Collections.java:998)
at java.util.Collections$UnmodifiableCollection.size(Collections.java:998)
at java.util.Collections$UnmodifiableCollection.size(Collections.java:998)
at java.util.Collections$UnmodifiableCollection.size(Collections.java:998)
at java.util.Collections$UnmodifiableCollection.size(Collections.java:998)
at java.util.Collections$UnmodifiableCollection.size(Collections.java:998)
at java.util.Collections$UnmodifiableCollection.size(Collections.java:998)
at java.util.Collections$UnmodifiableCollection.size(Collections.java:998)
at java.util.Collections$UnmodifiableCollection.size(Collections.java:998)
at java.util.Collections$UnmodifiableCollection.size(Collections.java:998)
at java.util.Collections$UnmodifiableCollection.size(Collections.java:998)
リストが既に UnmodifiabelList であるかどうかを確認し、Google のコレクションと同じように同じリストを返すことを考えましたが、これはパブリック クラスではありません。
これをエレガントに解決する方法はありますか?
ありがとう