关于泛型函数的泛型错误语法Java 1.7

Jad*_*mas 3 java generics compiler-errors syntax-error

使用Java 1.7编译器,值得注意的是,调用泛型函数所接受的语法非常特殊.它强制您使用它this来引用泛型函数.

例如,对于定义为的函数:

private <T> Object genericFunction(T t){
    //function code
}
Run Code Online (Sandbox Code Playgroud)

在引用它时,以下内容给出了语法错误:

Object o = <ClassName>genericFunction(ClassName t);
Run Code Online (Sandbox Code Playgroud)

虽然接受以下内容:

Object o = this.<ClassName>genericFunction(ClassName t);
Run Code Online (Sandbox Code Playgroud)

为什么会这样?它不应该采取它们两个?

Sot*_*lis 6

它是Java语言规范所要求的.

的MethodInvocation:

  • MethodName([ArgumentList])
  • TypeName.[TypeArguments]标识符([ArgumentList])
  • ExpressionName.[TypeArguments]标识符([ArgumentList])
  • 小学.[TypeArguments]标识符([ArgumentList])
  • 超级 [TypeArguments]标识符([ArgumentList])
  • TypeName.超级 [TypeArguments]标识符([ArgumentList])

TypeArguments元素总是要来的一些表达,然后一个后..它不能在简单的方法名称之前.