使用通配符将函数限制为仅使用类及其子类

时间:2015-08-01 12:06:03

标签: java generics

       public <T extends Exception> void testFunction(T  t) {

}

这与编写testFunction(Exception t)相同。我上面使用泛型来表明java允许这样做。

但Java不允许使用通配符

        public void testFunction(<? Extends Exception> t) {

}

我如何在这里使用通配符?这样做没有真正的目的。但是仍然希望从语法的角度来看是否有可能的方法。

2 个答案:

答案 0 :(得分:2)

public <T extends Integer> void testFunction(T  t) { ... }

此函数接受Integer或任何子类型(如果存在)。它强制您提供Integer的子类型。因此它接受与

完全相同的类型范围
public void testFunction(Integer i) { ... }

实际上没有办法在Java中指定严格的子类型(独占的上限类型)。

答案 1 :(得分:1)

您不需要泛型(即使您使用非最终类替换Integer):

public void testFunction(Integer t) {