我想知道任何人都可以幫助我提供雙精度和浮點精度的選項嗎?專門爲雙精度和浮點精度的java類
我正在使用Java3D和Point3d和Point3f的API規範,我的理解是實現有效地複製Point3f類,在必要時用double替換float。這是因爲泛型不能用於原始數據類型?效率?
我正在寫一個Curve類,我想知道應該以類似的方式提供Curved和Curvef。這是最好的選擇嗎?
我想知道任何人都可以幫助我提供雙精度和浮點精度的選項嗎?專門爲雙精度和浮點精度的java類
我正在使用Java3D和Point3d和Point3f的API規範,我的理解是實現有效地複製Point3f類,在必要時用double替換float。這是因爲泛型不能用於原始數據類型?效率?
我正在寫一個Curve類,我想知道應該以類似的方式提供Curved和Curvef。這是最好的選擇嗎?
是的,不幸的是,Java泛型不適用於原始類型。
雖然你可以做代碼生成,從一個模板生成多個java文件。
Java 8將引入許多功能接口的專用原始版本,如IntFunction
。這將是非常醜陋的。
感謝您的幫助。非常感激。 – felice 2013-03-01 13:49:29
我認爲這裏主要關注的是性能。通用類型參數必須是Object
的子類型,那麼通用實現應使用Double
和Float
包裝(因爲原始類型不適用於通用機制)。
在這種情況下,Curve
的每個實例都會實例化幾個對象,每個double/float值對應一個對象。實際值將通過方法調用(如doubleValue()
和floatValue()
)讀取。此外,由於原始包裝器是不可變的,所以涉及包裝器的任何操作的結果都必須存儲在新的實例中。這似乎不可接受,因爲Curve
可能會用於繁重的計算。
謝謝你。正如你所建議的,Curve需要執行許多計算。 – felice 2013-03-01 13:48:07
請參閱http://stackoverflow.com/questions/2721546/why-dont-generics-support-primitive-types獲取相關信息 – djechlin 2013-02-28 17:44:09
如果您同時使用這兩個選項,請只寫兩個選項。 – 2013-02-28 17:46:30
還需要指出的是,這顯然是不成熟的優化。只需使用雙。 – djechlin 2013-02-28 18:08:24