有沒有辦法在Java中進行自動隱式類型轉換?例如,假設我有兩種類型,'FooSet'和'BarSet',它們都是Set的表示。這是很容易的類型之間轉換,這樣我寫了兩個實用的方法:Java中的自動類型轉換?
/** Given a BarSet, returns a FooSet */
public FooSet barTOfoo(BarSet input) { /* ... */ }
/** Given a FooSet, returns a BarSet */
public BarSet fooTObar(FooSet input) { /* ... */ }
現在說有這樣的方法,我想打電話:
public void doSomething(FooSet data) {
/* .. */
}
但我只有一個BarSet myBarSet
...這意味着額外的輸入,如:
doSomething(barTOfoo(myBarSet));
有沒有辦法告訴某些類型可以自動轉換爲其他類型的編譯器?我知道這是可能的C++與重載,但我找不到在Java中的一種方式。我想就可以輸入:
doSomething(myBarSet);
並且編譯器知道自動調用barTOfoo()
更多詳細信息...我有我不能改變兩個獨立的庫,並且它們都使用相似但不兼容數據結構。我經常需要從一個庫中獲取數據,操作它,然後將它傳遞給另一個庫。我的代碼最終遍佈着各處的fooTObar和barTOfoo調用。 – davr 2010-03-09 01:58:46
這種類似但不太直接兼容的API之間的粘合絕對不是Java的強項之一。有很多樣板可以完成。 – Yishai 2010-03-09 02:26:47
如果有人很好奇,這兩個庫是基於JSON的對象(用於與web服務交談)和基於AMF的對象(用於通過持久RMTP連接與Flash客戶端交談)。 AMF和JSON都有數組,列表,關聯數組,對象等概念。所以在Java中,我不斷地在AMFDataArray和JSONArray,AMFDataObj和JSONObject等之間進行轉換。 – davr 2010-03-10 00:56:39