为什么void method1(T obj)不允许泛型?

时间:2014-03-23 07:30:32

标签: java generics

当我做的时候

 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;
     }

1 个答案:

答案 0 :(得分:7)

返回类型不是问题,通用规范(<T>)是。

在您展示的第一个剪辑中,编译器无法知道T应该是一个通用说明符,因此它假设它是一个类的名称(如IntegerString)。由于没有这样的类,编译失败。

在开头添加<T>后,很明显T是通用说明符。现在,如果您愿意,可以将返回类型更改为void

<T> void method1 (T obj) {
    // do stuff
}