专门针对double和float精度的java类

时间:2013-02-28 17:40:59

标签: java performance oop double precision

我想知道是否有人可以帮我提供双级和浮动精度的选项?

我正在使用Java3D,并且从Point3d和Point3f的API规范中,我的理解是实现有效地复制了Point3f类,在必要时将float替换为double。这是因为泛型不能与原始数据类型一起使用吗?效率η

我正在写一个Curve类,我想知道我是否应该以类似的方式提供Curved和Curvef。这是最好的选择吗?

2 个答案:

答案 0 :(得分:5)

是的,遗憾的是Java泛型不适用于原始类型。

你可以做代码生成,从一个模板生成多个java文件。

Java 8将引入许多专用原始版本的功能接口,如IntFunction。这将是非常丑陋的。

答案 1 :(得分:1)

我认为这里主要关注的是表现。通用类型参数必须是Object的子类型,然后通用实现应该使用DoubleFloat包装器(因为基本类型不适用于通用机制)。

在这种情况下,Curve的每个实例都会实例化几个对象,每个对应一个double / float值。实际值将通过doubleValue()floatValue()等方法调用来读取。此外,由于原始包装器是不可变的,因此涉及包装器的任何操作的结果必须存储在新实例中。这似乎不可接受,因为Curve可能会用于繁重的计算。