Angenommen, ich habe eine Factory-Schnittstelle mit der Methode getTransformer(Item item)
Item ist eine Schnittstelle. Factory verwendet instanceOf
, um den richtigen Transformator für Item to Entity zu finden. Der Transformer implementiert die Methode S transform(T item)
.Vermeiden von "Ungeprüfter Anruf" Warnung
Anruf an die Fabrik, um Transformator zu bekommen ist in Ordnung, aber Anruf transformer.transform
wird in der IDE als ungeprüfter Anruf zu transform(T)
hervorgehoben. Wie vermeide ich das? heißt
DTOTransformer dtoTransformer = dtoTransformerFactory.getTransformer(item);
ItemEntity itemEntity = dtoTransformer.transform(item); // this line has error
BTW, dies wurde für ein Interview im Fluge geschrieben, die ich morgen haben werden. Ich würde gerne wissen, ob dies behoben werden kann oder verwende einfach die Anmerkung deaktiviert, um Compiler-Warnungen zu vermeiden.
public interface DTOTransformer<S extends ItemEntity, T extends Item> {
S transform(T item);
}
public interface DTOTransformerFactory {
DTOTransformer getTransformer(Item item);
}
public class DTOTransformerFactoryImpl implements DTOTransformerFactory {
@Override
public DTOTransformer getTransformer(Item item) {
if (item instanceof RegularItemDTO) {
return new RegularDTOTransformer();
} else if (item instanceof SpecialItemDTO) {
return new SpecialDTOTransformer();
} else {
throw new IllegalArgumentException("No transformer for type: " + item.getClass());
}
}
}
public class SpecialDTOTransformer implements DTOTransformer<SpecialItemEntity, SpecialItemDTO> {
@Override
public SpecialItemEntity transform(SpecialItemDTO item) {
SpecialItemEntity specialItemEntity = new SpecialItemEntity();
specialItemEntity.setPrice(item.getPrice());
specialItemEntity.setSku(item.getSku());
specialItemEntity.setItem(item.getItem());
specialItemEntity.setBuyAmount(item.getBuyAmount());
specialItemEntity.setDiscountPrice(item.getDiscountPrice());
return specialItemEntity;
}
}
„diese Linie hat Fehler“ Diese Linie ist nicht in dem Code, den Sie geschrieben haben. –
'DTOTranformer' ist ein Rohtyp. – shmosel
Es ist schwer zu sagen, was das Problem ist, weil Sie über Code sprechen, den Sie nicht zeigen ... aber rohe Typen zu verwenden wird Teil des Problems sein. –