如何制作没有双精度和浮点数的通配符

How to make wildcard without double and float

我想制作泛型,它只能包含不带小数部分的数字 (IntegerLongCharByteShort) .可能吗?我理解 class Numberabstract,所以每个人都可以编写自己的各种数字的实现。但现在我只谈论 Oracle 实现。

不,不可能在编译时实现此行为。

您可以在 Java 中指定多个类型范围 - 例如 T extends Integer & Long - 但这意味着 T 必须扩展 both IntegerLong.

其他语言 - 例如 Ceylon - 知道类型联合的概念,如 Integer|Long|Char,但 Java 不知道。

一种可能的解决方法是使用 Number 作为类型绑定并在运行时手动检查类型,或者为允许的类型复制 public 接口(例如写 someMethod(Integer)someMethod(Short) 调用接受 Number 的私有方法。无论如何,请三思你是否真的需要这个限制。