[英]Design for converting objects with mirroring class hierarchy
我有一個低級 (即不能依賴於高級模塊)MySQL DAO包,該包返回多態對象
abstract class MySQLAnimal {
int a;
}
class MySQLCat extends MySQLAnimal {
int b;
}
Collection<MySQLAnimal> retrieveAllMySQLAnimals(...) {...}
然后,我有一個使用此程序包的使用者,該程序包提供了抽象(即與如何檢索它們無關),並包含具有鏡像類層次結構的類:
abstract class Animal {
int a;
}
class Cat extends Animal {
int b;
}
Collection<Animal> retrieveAllAnimals(...) {...}
我正在嘗試在此使用者包中編寫一個適配器,該適配器需要使用MySQL DAO檢索MySQLCat
對象,並以抽象類的形式返回它(即,實現retrieveAllAnimals(...)
方法)。 什么是最干凈的方法(閱讀:無需調用instanceof
)?
從Class
到Class
有一個HashMap
。 當一個對象進入時,從它自己的類中在HashMap
中查找它,然后實例化新類的對象,並使用反射來復制相同名稱的所有成員變量。
將來支持新類所需的唯一更改是添加新映射,這些映射可以存儲在配置文件中。
即
mapping.put(MySQLCat.class, Cat.class);
Class<? extends Animal> targetClass = mapping.get(objectToMap.getClass());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.