1
private <T extends Number> T method(T param){...}

这将接受 AtomicInteger、AtomicLong、BigDecimal、BigInteger、Byte、Double、Float、Integer、Long、Short。

我只想接受 Double、Integer、Float。

4

2 回答 2

8

你不能像这样绑定泛型类型,因为Integer,DoubleFloatare final。因此,它们不能扩展。

您可以重载三个方法:

private Integer method(Integer param){...}

private Double method(Double param){...}

private Float method(Float param){...}
于 2013-08-29T05:10:39.990 回答
1

我不相信有办法通过泛型来做到这一点(因为你想要的那些类型是兄弟姐妹)。

相反,我会重载该方法以接收这些不同的参数。对于每个客户端来说,它看起来都是一样的,而且如果客户端试图用错误的类型调用方法,编译器也会给你一个错误。

于 2013-08-29T05:11:21.610 回答