[解決済み] チェックされていない割り当ての警告
質問
Android Studio 1.1.0を使用しています。
このため、警告は発生しません。
public static class A {
public Map<Integer, String> getMap() {
return null;
}
}
public static class B {
public void processA(A a) {
Map<Integer, String> map = a.getMap();
}
}
しかし
A
をジェネリックにする。
public static class A<T> {
public Map<Integer, String> getMap() {
return null;
}
}
そしてこの行。
Map<Integer, String> map = a.getMap();
は警告が出るようになりました。
"Unchecked assignment: 'java.util.Map to java.util.Map<java.lang.Integer, java.lang.String>'
.
の署名があっても
getMap
とは全く独立しています。
T
の型に関して曖昧さはありません。
Map
が含まれます。
を再実装することで警告を取り除くことができることは知っています。
processA
を以下のように設定します。
public <T> void processA(A<T> a) {
Map<Integer, String> map = a.getMap();
}
しかし、なぜそんなことをしなければならないのでしょうか?というのは
T
ということです。
そこで質問ですが、なぜタイプ消去は
T
(のインスタンスを渡しているのなら、それは理解できる。
A
,
T
は未知数) だけでなく、以下のような一般的なシグネチャもハードコードされています。
<Integer, String>
この場合は?
どのように解決するのですか?
2番目のケースで、あなたが行う場合。
public void processA(A a)
とはどういう意味ですか?
A
? という意味でしょうか?
A<String>
または
A<List<String>>
または何ですか?の型に関連するものは何も使っていないかもしれません。
A
しかし、コンパイラはこの事実を知りません。コンパイラにとっては、単に
A
はパニックの兆候です。
あなたの場合、特にAの種類を知る必要はないので、できます。
public void processA(A<?> a) {
Map<Integer, String> map = a.getMap();
}
引数の型が
A<?>
の型は特に気にしないということです。
A
で、ワイルドカードを指定するだけです。あなたにとって、これは
A
で、その総型として任意の型を指定することができます。実際には、型がわからないということです。に関連することは何もできないので、役に立たない。
A
と同じようにタイプセーフで
?
は、事実上何でもありです
しかし、あなたのメソッド本体と同じように、このメソッドで
A<?>
なぜなら、本文中のどこにも、実際に
A
関連
-
[解決済み】"実引数リストと形式引数リストの長さが異なる"
-
[解決済み】エラー「No enclosing instance of type Foo is accessible」の原因と修正方法について教えてください。
-
[解決済み】Javaのswitch文。定数式が必要だが、定数である
-
[解決済み] StringBuilderをクリアまたは空にするにはどうすればよいですか?重複] [重複] [重複] [重複] [重複] [重複
-
[解決済み] javacが「using unchecked or unsafe operations」という警告を出す原因は何ですか?
-
[解決済み] タイプの安全性。アンチェック・キャスト
-
[解決済み] Javaにおけるチェック済み例外とチェックされていない例外の理解
-
[解決済み] チェックされていないキャストの警告に対処するにはどうすればよいですか?
-
[解決済み] JavaにおけるSuppressWarnings("unchecked")とは何ですか?
-
[解決済み】なぜJavaの+=, -=, *=, /=複合代入演算子はキャスティングを必要としないのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】リンクリストの負の値の数でnegativeCntrを代入する
-
[解決済み】エラー:'if'のない'else'エラー
-
[解決済み】Android java.lang.IllegalStateException: Android java.lang.IllegalStateException: Could not execute method of the activity
-
[解決済み】エラー「No enclosing instance of type Foo is accessible」の原因と修正方法について教えてください。
-
[解決済み】指定された子にはすでに親がいます。先に子の親に対してremoveView()を呼び出す必要がある(Android)
-
[解決済み】Java JDK - doubleからintへの非可逆変換の可能性
-
[解決済み】非閉鎖文字リテラルエラー
-
[解決済み】Javaで文字列をコピーするにはどうしたらいいですか?
-
[解決済み】Java: GZIPInputStreamの作成に失敗しました。GZIP形式ではありません
-
[解決済み】Eclipseで「パッケージエクスプローラー」ビューが見つからない