想象一下,我有两个对象(“来自”和“来”)
我需要为所有的getter扫描对象“from”。如果对象“to”包含对应的setter,它将调用它来设置“to”的属性值,该属性值等于“from”的属性。
setter中的类型应与getter返回的值兼容(如果不兼容,则不执行调用)。
兼容意味着setter中的参数类型应该相同或者是getter的返回类型的超类。
我确信我知道解决这个任务的方法。我需要写一些方法“assign”,例如:
public static void assign(Object to, Object from) {
Class<?> classTo = to.getClass();
Class<?> classFrom = from.getClass();
Method[] methodsTo = classTo.getMethods();
Method[] methodsFrom = classFrom.getMethods();
for (Method methodFrom : methodsFrom) {
if...
}
}
对于每个get-method,我需要遍历set-methods列表,并调用get-method传递的结果作为对应set-method的参数。
在这种情况下,该算法的复杂度将为n * m(其中n - 第一类中的方法数量,m - 秒)。
所以我的问题是 - 如何用复杂度等于n + m的算法来解决这个任务?
有没有任何众所周知的算法,或者我应该使用某些数据结构之一的实现(例如hashmap)?
提前谢谢。