为什么 javac 在这种情况下不检查未声明的 TypeParameter?
Why javac not checks the undeclared TypeParameter in this case?
有一个与 Java 泛型相关的问题。请看下面的一段代码。
class Beta{
public void hello(){}
}
class Alpha {
public <Anything> void greet(Beta beta) {
beta.hello();
}
}
在方法greet()
中,<Anything>
没有在任何地方声明。为什么在这种情况下 javac 不抛出任何错误?
<Anything>
唯一出现的地方是它的声明。
它是在方法的范围内声明的,但从未使用过。
从通用方法的Java语言规范中获取以下示例:
class CollectionConverter {
<T> List<T> toList(Collection<T> c) {...}
}
第一个 <T>
声明类型参数。第二个和第三个将它用于 return 类型和参数类型。
您的示例基本上只是第一个 <T>
,没有实际使用。有点奇怪,但不是问题。
有一个与 Java 泛型相关的问题。请看下面的一段代码。
class Beta{
public void hello(){}
}
class Alpha {
public <Anything> void greet(Beta beta) {
beta.hello();
}
}
在方法greet()
中,<Anything>
没有在任何地方声明。为什么在这种情况下 javac 不抛出任何错误?
<Anything>
唯一出现的地方是它的声明。
它是在方法的范围内声明的,但从未使用过。
从通用方法的Java语言规范中获取以下示例:
class CollectionConverter {
<T> List<T> toList(Collection<T> c) {...}
}
第一个 <T>
声明类型参数。第二个和第三个将它用于 return 类型和参数类型。
您的示例基本上只是第一个 <T>
,没有实际使用。有点奇怪,但不是问题。