2011-07-04 84 views
6

我遇到了一個幫助器類的問題我正在致力於在兩個相同名稱的類之間進行翻譯。這兩個類都不在我的控制範圍之內,所以我不能簡單地重命名它們。解決名稱空間之間的類命名衝突的最佳方法

我的基本選項都涉及聲明命名空間中充滿了類型中的至少一個:

import com.myco.second.long.package.namespace.MyObject; 
public class MyObjectConvertor { 

    MyObject transform(com.myco.first.long.package.namespace.MyObject o) {} 
} 

或者相反的方法:

import com.myco.first.long.package.namespace.MyObject; 
public class MyObjectConvertor { 

    com.myco.second.long.package.namespace.MyObject transform(MyObject o) {} 
} 

或者宣佈兩個命名空間,一個更明確模式:

public class MyObjectConvertor { 

    com.myco.second.long.package.namespace.MyObject 
     transform(com.myco.first.long.package.namespace.MyObject o) {} 
} 

是否有另一種解決方案,可能會收拾這些方法od簽名?我想知道是否可以使用某種C++「typedef」風格的解決方案?

回答

8

沒有辦法整理簽名,至少有一個類將不得不由全限定類名引用。

在你的特殊情況下,我甚至會說:不要導入任何這些類,在你的源代碼中使用第3版,這樣大家都清楚,你的轉換類同名定義在不同包