Java 为什么使用类型参数调用非参数化方法不是错误?

Java 为什么使用类型参数调用非参数化方法不是错误?,java,generics,Java,Generics,我有一个Java程序,我本来希望它不会编译,但它确实编译了: class Test { public static void f() { } void m() { Test.<String>f(); } } 类测试{ 公共静态void f(){ } void m(){ Test.f(); } } 为什么javac允许以这种方式调用非参数化方法 我的Java编译器版本是:javac1.7.0_75显式类型参数被忽略 这一点载

我有一个Java程序,我本来希望它不会编译,但它确实编译了:

class Test {
    public static void f() {
    }

    void m() {
            Test.<String>f();
    }
}
类测试{
公共静态void f(){
}
void m(){
Test.f();
}
}
为什么javac允许以这种方式调用非参数化方法


我的Java编译器版本是:javac1.7.0_75

显式类型参数被忽略

这一点载于:

  • 如果方法调用包括显式类型参数,并且成员是泛型方法,则类型参数的数量相等 方法的类型参数数
此子句意味着非泛型方法可能是 适用于提供显式类型参数的调用。 事实上,它可能被证明是适用的在这种情况下,类型 参数将被忽略。


您使用的是哪个JDK版本?它没有编译给我(JDK1.5和1.6)@Albert哦,我使用的是Java7。我将用我的JDK版本编辑描述。你从哪里得到这些东西的ⁿ|ⁿ