如何制作没有double和float的通配符

时间:2016-06-08 18:41:43

标签: java generics wildcard

我想制作泛型,只能包含没有小数部分的数字(IntegerLongCharByteShort)。可能吗?我知道class Numberabstract,所以每个人都可以自己编写各种数字的实现。但现在我只讨论Oracle实现。

1 个答案:

答案 0 :(得分:3)

不,在编译时无法实现此行为。

您可以在Java中指定多个类型边界 - 例如T extends Integer & Long - 但这意味着T必须扩展 Integer和{{1} }。

其他语言 - 例如Ceylon - 知道像Long这样的类型联合的概念,但Java却没有。

可能的解决方法是使用Integer|Long|Char作为类型绑定并在运行时手动检查类型,或复制允许类型的公共接口(例如,写Number和{{1}调用接受someMethod(Integer)的私有方法。无论如何,请三思而后行,是否真的需要这种限制。