当我使用maven编译ParameterizedType时,如何解决此警告

时间:2016-06-03 13:11:45

标签: java maven reflection

在此期间,我使用泛型来处理一些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?

1 个答案:

答案 0 :(得分:1)

这是关于使用不打算使用的java内部类的警告。而是使用该类的"public" interface

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