【发布时间】:2015-08-11 11:36:18
【问题描述】:
使用 Java 1.7 编译器,有趣的是,调用泛型函数所接受的语法非常特殊。它强制你使用this 来引用泛型函数。
例如对于定义为的函数:
private <T> Object genericFunction(T t){
//function code
}
引用它时,下面给出了一个语法错误:
Object o = <ClassName>genericFunction(ClassName t);
虽然接受以下内容:
Object o = this.<ClassName>genericFunction(ClassName t);
为什么会这样?不应该两个都用吗?
【问题讨论】:
-
可能是因为它更难解析,因为它看起来像一个比较。
-
你为什么要提供类型见证?
-
是的,这很烦人。一定有一些技术上的困难。并且好处可能不是很大,因为在大多数情况下,类型会被推断出来。
-
为什么说它是必需的?我可以使用 1.7 编译器调用通用函数,如下所示: Object o = genericFunction(s) 其中 s 是一个字符串,而 genericFunction 的定义与您在示例中所做的一样。
-
但是如果你在函数调用中使用泛型见证,它不会让你把它放在它前面,除非你有一个表达式后跟一个
.
标签: java generics compiler-errors syntax-error