private <T extends Number> T method(T param){...}
这将接受 AtomicInteger、AtomicLong、BigDecimal、BigInteger、Byte、Double、Float、Integer、Long、Short。
我只想接受 Double、Integer、Float。
你不能像这样绑定泛型类型,因为Integer
,Double
和Float
are final
。因此,它们不能扩展。
您可以重载三个方法:
private Integer method(Integer param){...}
private Double method(Double param){...}
private Float method(Float param){...}
我不相信有办法通过泛型来做到这一点(因为你想要的那些类型是兄弟姐妹)。
相反,我会重载该方法以接收这些不同的参数。对于每个客户端来说,它看起来都是一样的,而且如果客户端试图用错误的类型调用方法,编译器也会给你一个错误。