我想制作泛型,只能包含没有小数部分的数字(Integer
,Long
,Char
,Byte
,Short
)。可能吗?我知道class Number
是abstract
,所以每个人都可以自己编写各种数字的实现。但现在我只讨论Oracle实现。
答案 0 :(得分:3)
不,在编译时无法实现此行为。
您可以在Java中指定多个类型边界 - 例如T extends Integer & Long
- 但这意味着T
必须扩展 Integer
和{{1} }。
其他语言 - 例如Ceylon - 知道像Long
这样的类型联合的概念,但Java却没有。
可能的解决方法是使用Integer|Long|Char
作为类型绑定并在运行时手动检查类型,或复制允许类型的公共接口(例如,写Number
和{{1}调用接受someMethod(Integer)
的私有方法。无论如何,请三思而后行,是否真的需要这种限制。