この質問は、ヒープ汚染がどのように起こるかに関するものではありません。この質問は、注釈@SafeVarargs
にどのような影響があるかについてのものではありません。私はそれがローカルとコールサイトの両方で警告を抑制するために使用されることを理解します。私はdocumentationを読んでいます。私の質問は、なぜこの注釈がJava言語に追加されたのかです。@SafeVarargsアノテーションの存在/非存在は本当に有用な区別ですか?
は、次のことを考えてみましょう:
注釈の不在が有用な区別ではありません。 VarArgsを安全でない方法、つまり "UnsafeVarargs"で使用するつもりはありません。
これは、
@Override
などの注釈とは異なります。アノテーションがないと便利な区別があります。「スーパークラスのメソッドをオーバーライドするつもりはありません。誰かが同じシグネチャのメソッドを私のスーパークラス "プログラマーは、Varargsを安全に使用する方法を知っているか、そうでないかを知っています。アノテーションを追加しても、アノテーションは変更されません。それでは、発信者にセキュリティの誤った感覚を提供するだけではありませんか?
これは、ドアを閉めている間に車のドアを持ち上げると、キーが内部にロックされないようにするという欠陥の概念を思い起こさせます。
警告2を続けると、警告をグローバルにデフォルトで無効にしてから、広範なレビューを行う際にグローバルに再度有効にする方が良いでしょうか?
多分私は何かを逃しています。 Javaの古いバージョンから移行するときに、アノテーションが役に立つ役割を果たしているのかもしれません。私はあなたの答えを歓迎します。ありがとう。