我想知道是否有人可以帮我提供双级和浮动精度的选项?
我正在使用Java3D,并且从Point3d和Point3f的API规范中,我的理解是实现有效地复制了Point3f类,在必要时将float替换为double。这是因为泛型不能与原始数据类型一起使用吗?效率η
我正在写一个Curve类,我想知道我是否应该以类似的方式提供Curved和Curvef。这是最好的选择吗?
答案 0 :(得分:5)
是的,遗憾的是Java泛型不适用于原始类型。
你可以做代码生成,从一个模板生成多个java文件。
Java 8将引入许多专用原始版本的功能接口,如IntFunction
。这将是非常丑陋的。
答案 1 :(得分:1)
我认为这里主要关注的是表现。通用类型参数必须是Object
的子类型,然后通用实现应该使用Double
和Float
包装器(因为基本类型不适用于通用机制)。
在这种情况下,Curve
的每个实例都会实例化几个对象,每个对应一个double / float值。实际值将通过doubleValue()
和floatValue()
等方法调用来读取。此外,由于原始包装器是不可变的,因此涉及包装器的任何操作的结果必须存储在新实例中。这似乎不可接受,因为Curve
可能会用于繁重的计算。