我有以下Java程序,我期望不编译,但它做到了:
class Test {
public static void f() {
}
void m() {
Test.<String>f();
}
}
Run Code Online (Sandbox Code Playgroud)
为什么javac允许以这种方式调用非参数化方法?
我的Java编译器版本是:javac 1.7.0_75
简单地忽略显式类型参数.
- 如果方法调用包含显式类型参数,并且成员是泛型方法,则类型参数的数量等于方法的类型参数的数量.
此子句意味着非泛型方法可能适用于提供显式类型参数的调用.实际上,它可能会变得适用.在这种情况下,类型参数将被忽略.
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |