当我使用 maven 编译参数化类型时,如何解决此警告



在这段时间里,我使用泛型来处理一些映射。像这样编写代码:

@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?

这是关于使用不打算使用的 java 内部类的警告。而是使用该类的"公共"接口

if (type instanceof ParameterizedType) {
        clazz = (Class<entity>) ((ParameterizedType) type).getRawType();

最新更新