【发布时间】:2012-12-17 17:32:26
【问题描述】:
我正在尝试创建一些 Java 类,它们应该使用浮点数或双精度数(出于模拟目的,我需要同时支持这两者)。这些类需要做一些基本的算术运算,还需要使用三角函数(sin、cos、atan2)。
我试图做一个通用的方法。由于 Java 不允许泛型中的原始类型,而 MyClass<T extends Number> 确实允许 Double 和 Float,但使基本算术成为不可能,所以我围绕 Double 和 Float 构建了一个包装类。但是这种方法失败了,只要我需要在一个泛型类中实例化一个值。
有没有什么简洁的方法可以同时支持浮点和双精度,而无需为每种类型复制所有代码?
【问题讨论】:
-
如果你把方法写成double,你也可以用float..
-
您需要使用包装类还是使用原语?
-
@Thihara 是的,但是该方法随后将返回一个双精度数,而与其参数的类型无关。我需要保持给定的精度。
-
@AndrewLogvinov:我不需要使用 Number 包装类,但如果可以在解决方案中使用某种包装类,那么对于使用集合会很有帮助。我主要需要做算术。仅使用原语,我必须为每种类型编写一次所有方法,如果可能的话,我想避免这种情况。
-
如果您使用 Number,那么您必须进行检查以确保其实际 Doubles 和 Floats 已通过...