上記のコード例を検討してください。for-each-loopでのキャスト
コンパイラがために、各ループで「互換性のない型」文句を言うと言う理由:
B.java:10: incompatible types
found : java.lang.Object
required: java.lang.String
for (String k : a.m.keySet()) {
私は型パラメータを取り除く場合は、すべてが正常にコンパイルされます。
public class A<T> {
Map<String,Field> m;
void foo() {
new B(this).foo();
}
}
class B {
A a;
B(A a) {
this.a = a;
}
void foo() {
for (String k : a.m.keySet()) {
}
}
}
あなたの本当のクラスは、例とまったく同じですか?あなたの 'Map'は型パラメータを持っていますか、それとも生の' Map'ですか?型パラメータがない場合、 'keySet'はキー型のコレクションではなく' Object'のコレクションを返します。 – Jesper
実際のコードを教えてください。実際のforeachで反復処理するオブジェクトのタイプは何ですか? – penartur
あなたのコードがうまくいかない理由を理解するために、実際には動作しないコードを見なければなりません。 – NPE