これが許可されず、同じ署名として扱われないのはなぜですか?
public Object myMethod(Map<String, String[]> values) {
return this;
}
public Object myMethod(Map<String, String> values) {
return this;
}
これが許可されず、同じ署名として扱われないのはなぜですか?
public Object myMethod(Map<String, String[]> values) {
return this;
}
public Object myMethod(Map<String, String> values) {
return this;
}
これはType Erasureによるものです。Type Erasure は、コンパイル時にほとんどのジェネリック情報を削除します。したがって、コンパイル後の上記のコードは次のようになります
public Object myMethod(Map values) {
return this;
}
public Object myMethod(Map values) {
return this;
}
したがって、両方のメソッドは実行時に同一です。