[解決済み] コンパイラの警告「A generic array of T is created for a varargs parameter」を解決することは可能ですか?
2022-04-27 02:24:54
質問
これは問題のコードの簡略版です。あるジェネリッククラスはジェネリック型のパラメータを持つ別のクラスを使用し、ジェネリック型の1つをvarargsパラメータを持つメソッドに渡す必要があるのです。
class Assembler<X, Y> {
void assemble(X container, Y... args) { ... }
}
class Component<T> {
void useAssembler(T something) {
Assembler<String, T> assembler = new Assembler<String, T>();
//generates warning:
// Type safety : A generic array of T is
// created for a varargs parameter
assembler.assemble("hello", something);
}
}
この警告を出さずに、varargsメソッドにgenericパラメータを渡す正しい方法はありますか?
勿論、以下のようなものです。
assembler.assemble("hello", new T[] { something });
は、一般的な配列を作成できないため、動作しません。
解決方法は?
Java6では
@SuppressWarnings("unchecked")
は、ないと思います。
この バグレポート にはより多くの情報がありますが、要するにコンパイラは汎用型の配列を好まないということです。
関連
-
IllegalArgumentException この例外を解決する方法
-
プロローグでのコンテンツは禁止されています
-
プロジェクトの依存関係を解決できなかった 解決
-
サーブレットクラスのインスタンス化エラーの解決法
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException: 1
-
マスキング このリソースにアクセスするには、完全な認証が必要です。
-
java 例外。Javaツールの初期化
-
[解決済み] varargs パラメータでヒープを汚染する可能性があります。
-
[解決済み】Nullable型をジェネリックパラメータにすることは可能か?
-
[解決済み] なぜJavaのenumリテラルは汎用型パラメータを持つことができないのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Java Error スレッド "AWT-EventQueue-0" で例外発生 java.lang.
-
スタイルが読み込まれず、ブラウザのコンソールでエラーが報告される。リソースはスタイルシートとして解釈されますが、MIMEタイプtext/htmlで転送されます。
-
スレッド "main "での例外をEclipseで解決 java.lang.Error: 未解決のコンパイル問題、コンパイラとパッケージの不整合
-
エラーが報告されました。リソースの読み込みに失敗しました:サーバーは500(内部サーバーエラー)のステータスで応答しました。
-
eclipse の実行時に java 仮想マシンが見つからなかった
-
VMの初期化中にエラーが発生しました java/lang/NoClassDefFoundError: java/lang/Object
-
javaコンパイル時のエラー:不正な文字 '\ufeff' に対する解決策です。
-
mavenプロジェクトのテストエラー java.lang.ClassNotFoundException: org.glassfish.jersey.client.ClientConfig の問題を解決する。
-
スレッド "main" で例外発生 java.net.BindException: アドレスは既に使用中です。NET_Bind
-
Exception: java.util.NoSuchElementException: 行が見つかりません