泛型类中的静态方法?

泛型类中的静态方法?

在Java中,我想有一些东西:

class Clazz<T> {
  static void doIt(T object) {
    // shake that booty
  }}

但我明白了

无法对非静态类型T进行静态引用

我不了解基本用途之外的泛型,因此无法理解这一点。我无法在互联网上找到有关该主题的更多信息,这没有任何帮助。

有人可以通过类似的方式澄清这种使用是否可行?另外,为什么我的原始尝试不成功?


慕桂英3389331
浏览 2785回答 3
3回答

慕后森

您不能在静态方法或静态字段中使用类的泛型类型参数。类的类型参数仅在实例方法和实例字段的范围内。对于静态字段和静态方法,它们在类的所有实例之间共享,甚至是不同类型参数的实例,因此显然它们不能依赖于特定的类型参数。看起来您的问题似乎不需要使用类的类型参数。如果您更详细地描述您想要做的事情,也许我们可以帮助您找到更好的方法。

偶然的你

T在实例化类型之前,Java不知道是什么。也许你可以通过调用来执行静态方法,Clazz<T>.doit(something)但听起来你不能。处理事物的另一种方法是将type参数放在方法本身中:static&nbsp;<U>&nbsp;void&nbsp;doIt(U&nbsp;object)哪个不能让你对U有正确的限制,但它总比没有好....

慕村9548890

我遇到了同样的问题。我通过Collections.sort在java框架中下载源代码找到了我的答案。我使用的答案是将<T>泛型放在方法中,而不是放在类定义中。所以这有效:public&nbsp;class&nbsp;QuickSortArray&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;<T&nbsp;extends&nbsp;Comparable>&nbsp;void&nbsp;quickSort(T[]&nbsp;array,&nbsp;int&nbsp;bottom,&nbsp;int&nbsp;top){//do&nbsp;it}}当然,在阅读了上面的答案后,我意识到如果不使用泛型类,这将是一个可接受的替代方案:public&nbsp;static&nbsp;void&nbsp;quickSort(Comparable[]&nbsp;array,&nbsp;int&nbsp;bottom,&nbsp;int&nbsp;top){//do&nbsp;it}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java