使用类级别,如方法的形式参数的泛型有界类型参数

时间:2014-01-26 17:12:16

标签: java generics method-parameters bounded-types

我正在尝试在generics中学习java。我看到在类级别我们可以将有界类型参数指定为class Stats <T extends Number>

假设该类有array类型Taverage方法来计算那些T's的平均值,另一种方法来检查平均值是多少boolean isAverageSame(Stats<T extends Number> ob)两个对象是否相同。

然而,在课堂上的方法层面我不能这样做:
boolean isAverageSame(Stats<?> ob)如果我想找到两个对象的平均值相同或不同。

相反,我必须这样做:
java

为什么会这样?这只是在{{1}}中定义语法的方式还是我遗漏了什么?

感谢。

1 个答案:

答案 0 :(得分:4)

听起来你想要为方法声明一个新的泛型参数,在这种情况下你可以使用:

<U extends Number> boolean isAverageSame(Stats<U> ob)

请注意,这将允许您执行以下操作:

Stats<Integer> x = ...;
Stats<Float> y = ...;
boolean z = x.isAverageSame(y);

这就是你想要的吗?如果您只想将Stats<Integer>Stats<Integer>(等)进行比较,那么您只需要:

boolean isAverageSame(Stats<T> ob)

...换句话说,该方法不会引入另一个泛型类型参数。