use*_*048 15 java generics overloading
为什么这不允许和被视为相同的签名?
public Object myMethod(Map<String, String[]> values) {
return this;
}
public Object myMethod(Map<String, String> values) {
return this;
}
Run Code Online (Sandbox Code Playgroud)
这是因为类型擦除.类型Erasure在编译时删除所有泛型信息.所以编译之后的代码就是
public Object myMethod(Map values) {
return this;
}
public Object myMethod(Map values) {
return this;
}
Run Code Online (Sandbox Code Playgroud)
所以这两种方法在运行时都是相同的.
| 归档时间: |
|
| 查看次数: |
1872 次 |
| 最近记录: |