在此期间,我使用泛型来处理一些mapping.Code如下:
@Component
public class AbstractEntityMapping<entity, dto> implements EntityMapping<entity, dto> {
@Autowired
protected Mapper mapper;
private Logger logger = LoggerFactory.getLogger(AbstractEntityMapping.class);
@SuppressWarnings("unchecked")
public dto entityToDTO(entity entity) {
if (entity == null) {
return null;
}
try {
final dto dto = (dto) getDTOClass().newInstance();
mapper.map(entity, dto);
return dto;
} catch (Exception e) {
logger.error("mapping entity to dto error", e);
}
return null;
}
private Class getEntityClass() {
ParameterizedType genericSuperclass = (ParameterizedType) getClass().getGenericSuperclass();
Type type = genericSuperclass.getActualTypeArguments()[0];
Class<entity> clazz;
if (type instanceof ParameterizedTypeImpl) {
clazz = (Class<entity>) ((ParameterizedTypeImpl) type).getRawType();
} else {
clazz = (Class<entity>) type;
}
return clazz;
}
private Class getDTOClass() {
ParameterizedType genericSuperclass = (ParameterizedType) getClass().getGenericSuperclass();
Type type = genericSuperclass.getActualTypeArguments()[1];
Class<entity> clazz;
if (type instanceof ParameterizedTypeImpl) {
clazz = (Class<entity>) ((ParameterizedTypeImpl) type).getRawType();
} else {
clazz = (Class<entity>) type;
}
return clazz;
}
}
当我使用maven编译这段代码时,它暗示我:
[WARNING] AbstractEntityMapping.java:[131,39] sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl是内部专用 API, 可能会在未来发行版中删除
如何解决此警告?是否有任何类可以替换ParameterizedTypeImpl?
答案 0 :(得分:1)
这是关于使用不打算使用的java内部类的警告。而是使用该类的"public" interface
if (type instanceof ParameterizedType) {
clazz = (Class<entity>) ((ParameterizedType) type).getRawType();