当我做的时候
public class TestClass {
// i have intentionally not used TestClass<T>
void method1(T obj){
// i know i can use Object instead of T but i am not getting why T is not allowed here?
}
编译时间异常是
T cannot be resolved to a type
当我这样做时,它没有任何例外。为什么T现在解决了?
<T>T method1(T obj){
return null;
}
答案 0 :(得分:7)
返回类型不是问题,通用规范(<T>
)是。
在您展示的第一个剪辑中,编译器无法知道T
应该是一个通用说明符,因此它假设它是一个类的名称(如Integer
或String
)。由于没有这样的类,编译失败。
在开头添加<T>
后,很明显T
是通用说明符。现在,如果您愿意,可以将返回类型更改为void
:
<T> void method1 (T obj) {
// do stuff
}