2016-06-03 3 views
0

Während dieser Zeit zu kompilieren, kann ich Generika verwenden, um einige mapping.Code wie das zu handhaben:Wie kann ich lösen diese Warnung, wenn ich Maven verwenden ParameterizedType

@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; 
} 

}

Wenn ich Maven verwenden zu kompilieren dieser Code, deutet es mir, dass:

[WARNING] AbstractEntityMapping.java:[131,39]  sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl是内部专用 API, 可能会在未来发行版中删除 

Wie kann ich diese Warnung lösen Hat jede Klasse kann ParameterizedTypeImpl ersetzen?

Antwort

1

Das ist eine Warnung über die Verwendung interner Java-Klassen, die nicht verwendet werden sollen. Verwenden Sie stattdessen die "public" interface dieser Klasse

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

opus, ich löse wirklich dieses Problem auf diese Weise.Vielen Dank –

Verwandte Themen