2012-03-18 167 views
0

我读过关于为什么不能在泛型类中使用(编辑 - 泛型)(使用通用类中的类型参数)静态方法的文章,但为什么你可以在非泛型类中使用静态泛型方法?我没有看到第二个被允许的原因,但我有点理解为什么第一个不是。(Java)静态通用方法与泛型类静态方法

+0

你的意思是抽象的吗? – 2012-03-18 21:28:34

+0

我编辑了这个问题,sry回合。 – rubixibuc 2012-03-18 21:55:18

回答

9

为什么你不能有一个(编辑 - 通用)(其使用这种类型的参数从通用类)静态方法在泛型类

这样做的原因很简单:类型参数与类别不相关,但与类别实例相关联。

即,你不能这样做

class Test<T> { 
    public static void sayHello(T t) { // T for which instance?! 
     System.out.println("Hello"); 
    } 
} 


为什么你再使用非通用类的静态泛型方法?

为什么不呢?一个通用的方法需要的类型参数,所以如果它是静态的或没有,或者如果它是在类是通用的或不等等

例如,这罚款编译没关系:

class Test { 
    public static <T> void sayHello(T t) { 
     System.out.println("Hello " + t); 
    } 
} 

而且你会这样调用方法:

Test.<String>sayHello("some argument"); 
    ^^^^^^^^ 
    type parameter provided at the method-call: no instance required. 
+1

为什么downvote?答案有问题吗? – aioobe 2012-03-18 21:52:56

+0

根据问题中的编辑编辑答案。 – aioobe 2012-03-18 21:54:33