Что-то не так с проверками здесь?
С введением дженериков я неохотно выполняю экземпляр или кастинг как можно больше. Но я не вижу способа обойти это в этом сценарии:
for (CacheableObject<ICacheable> cacheableObject : cacheableObjects) {
ICacheable iCacheable = cacheableObject.getObject();
if (iCacheable instanceof MyObject) {
MyObject myObject = (MyObject) iCacheable;
myObjects.put(myObject.getKey(), myObject);
} else if (iCacheable instanceof OtherObject) {
OtherObject otherObject = (OtherObject) iCacheable;
otherObjects.put(otherObject.getKey(), otherObject);
}
}
В приведенном выше коде я знаю, что мои ICacheables должны когда-либо быть только экземплярами MyObject или OtherObject, и в зависимости от этого я хочу поместить их в 2 отдельные карты, а затем выполнить некоторую обработку ниже.
Мне было бы интересно, есть ли другой способ сделать это без проверки моего экземпляра.
Спасибо