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
添加回答
举报