[解決済み] varargs パラメータでヒープを汚染する可能性があります。
2022-03-19 20:18:08
質問
Java 7でgeneric型でvarargsを使用した場合に発生すると理解しています。
しかし、私の質問は...
Eclipseが言う「"その使用はヒープを汚染する可能性があります」とは、具体的にはどういう意味ですか?
そして
新しい
@SafeVarargs
アノテーションはこれを防ぐのでしょうか?
解決方法は?
ヒープポリューションとは専門用語です。参照するオブジェクトのスーパータイプではない型を持つ参照を指します。
List<A> listOfAs = new ArrayList<>();
List<B> listOfBs = (List<B>)(Object)listOfAs; // points to a list of As
これは、"unexplainable"につながる可能性があります。
ClassCastException
s.
// if the heap never gets polluted, this should never throw a CCE
B b = listOfBs.get(0);
@SafeVarargs
はこれを全く防げません。しかし、ヒープを汚染しないことが証明できるメソッドもありますし、コンパイラはそれを証明できないだけです。以前は、そのようなAPIの呼び出し側には、全く無意味な、しかし呼び出しのたびに抑制されなければならない厄介な警告が表示されていました。今は、APIの作者が宣言の場所で一度だけ警告を抑制することができます。
しかし、実際にそのメソッドが ではない 安全であれば、ユーザーへの警告はなくなります。
関連
-
[解決済み] Javaでパラメータの型の横にある3つの点は何を意味するのですか?
-
eclipse で「アクセス制限: タイプ 'HttpServer' は API ではありません」というプロンプトが表示される。
-
spring-boot 401 このリソースにアクセスするには完全な認証が必要です エラー解決
-
[解決済み] JavaBeanとは何ですか?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] List<Dog> は List<Animal> のサブクラスですか?Java のジェネリックはなぜ暗黙のうちに多相性にならないのですか?
-
[解決済み] Javaにおける菱形演算子(<>)のポイントは何ですか?
-
[解決済み】Apache Camelとは一体何ですか?
-
[解決済み】Javaの「ダブルブレース初期化」の効率化?
-
[解決済み] コンパイラの警告「A generic array of T is created for a varargs parameter」を解決することは可能ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
springboot project MIMEタイプ text/htmlで転送された静的ファイルを読み込む。
-
ファインバグタイプ
-
jd-gui Java Exceptionが発生しました。
-
プロジェクトの依存関係を解決できなかった 解決
-
eclipse の実行時に java 仮想マシンが見つからなかった
-
Spring boot runs with Error creating bean with name 'entityManagerFactory' defined in class path resource
-
Java コンパイルエラー - スレッド "main" で例外 java.lang.Error: 未解決のコンパイル問題です。
-
spring-boot 401 このリソースにアクセスするには完全な認証が必要です エラー解決
-
java -serverコマンドで「Error: no `server' JVM at ... jvm.dll」を解決する方法です。
-
[解決済み] Java SafeVargsアノテーション、標準やベストプラクティスは存在するのか?