3 回答

TA貢獻1797條經驗 獲得超6個贊
您需要一個了解 ClassA 和 ClassB 的所有成員的類型。將 ClassA 或 ClassB 彼此耦合是一個壞主意,因此您通常會看到第三種類型實現如下接口:
interface Converter<T, R> {
R convert(T obj);
}
你可以為你的類實現這個接口:
class AtoBConverter implements Converter<ClassA, ClassB> {
public ClassB convert(ClassA obj) {
...
}
}
這假定 ClassA 具有允許您檢查其狀態的公共方法,而 ClassB 具有允許您修改其狀態的構造函數/設置器。嚴格來說,如果所有三個類都在同一個 java 包中,您可以將這些方法/構造函數聲明為包私有。

TA貢獻1813條經驗 獲得超2個贊
您絕對應該選擇一個單獨的處理程序類來處理此轉換。
作為一個小的優化,您可以在此處理程序類上使用靜態 api,這樣無論何時您希望在兩個對象之間執行轉換,您都不必實例化處理程序類的實例。
例如:
假設您需要將類型 A 的對象轉換為類型 B 的對象。您的轉換器可能看起來像
class AToBConverter {
public static B convert(A objA){
//business logic to convert objA to objB
return objB;
} }
這里的優點是,無論何時需要將 A 類型的對象轉換為 B 類型的對象,您都可以簡單地執行以下操作:
B objB = AToBConverter.convert(objA); //Note how we don't need to create an instance of the converter
添加回答
舉報