我正在設計一個API。它會有很多方法相同,但有不同的參數基元。避免API設計中的基元?
public void someMethod1(int x);
public void someMethod1(float x);
public void someMethod1(double x);
public void someMethod2(int x, int y);
...
public void someMethod3(int x, int y, int z);
...
由於原語,我要複製粘貼&了很多,我認爲這是隨着時間的推移相當難以維護。在方法和構造函數中避免原語是個好主意嗎?例如,更換上面的將是:
public <T extends Number> void someMethod1(T x);
public <T extends Number> void someMethod2(T x, T y);
public <T extends Number> void someMethod3(T x, T y, T z);
編輯:
這有什麼缺點的?
太多問題!您可能想要提出多個問題,您不只是問過API設計中的原語。 – Brabster 2010-03-07 18:29:49
沒有簡單的解決方案,這在Java中:要麼你複製或使用代碼生成器(這是怎麼了,比方說,特羅韋具有快速TIntLongHashMap,其中只使用原語[因此比默認的Java HashMap的快得多]),或者你使用的對象,並承受巨大的表現懲罰。自動(un)裝箱數以百萬計的原語並生成數百萬個不必要的對象是殺死perfs的一種可靠方法。這就是爲什麼對於原始大集合,默認Java API和基於乾淨OO的東西根本不會削減它。那時你使用Trove等東西。這歸結於您的要求。 – SyntaxT3rr0r 2010-03-07 20:37:55