泛型类中的静态方法?在Java中,我想有一些东西:class Clazz<T> {
static void doIt(T object) {
// shake that booty
}}但我明白了无法对非静态类型T进行静态引用我不了解基本用途之外的泛型,因此无法理解这一点。我无法在互联网上找到有关该主题的更多信息,这没有任何帮助。有人可以通过类似的方式澄清这种使用是否可行?另外,为什么我的原始尝试不成功?
3 回答
慕后森
TA贡献1802条经验 获得超5个赞
您不能在静态方法或静态字段中使用类的泛型类型参数。类的类型参数仅在实例方法和实例字段的范围内。对于静态字段和静态方法,它们在类的所有实例之间共享,甚至是不同类型参数的实例,因此显然它们不能依赖于特定的类型参数。
看起来您的问题似乎不需要使用类的类型参数。如果您更详细地描述您想要做的事情,也许我们可以帮助您找到更好的方法。
偶然的你
TA贡献1841条经验 获得超3个赞
T
在实例化类型之前,Java不知道是什么。
也许你可以通过调用来执行静态方法,Clazz<T>.doit(something)
但听起来你不能。
处理事物的另一种方法是将type参数放在方法本身中:
static <U> void doIt(U object)
哪个不能让你对U有正确的限制,但它总比没有好....
慕村9548890
TA贡献1884条经验 获得超4个赞
我遇到了同样的问题。我通过Collections.sort
在java框架中下载源代码找到了我的答案。我使用的答案是将<T>
泛型放在方法中,而不是放在类定义中。
所以这有效:
public class QuickSortArray { public static <T extends Comparable> void quickSort(T[] array, int bottom, int top){//do it}}
当然,在阅读了上面的答案后,我意识到如果不使用泛型类,这将是一个可接受的替代方案:
public static void quickSort(Comparable[] array, int bottom, int top){//do it}
添加回答
举报
0/150
提交
取消