Qualcuno può spiegare perché c'è un avviso di conversione non tipizzato sulla linea di assegnazione? Si noti che non vi è alcun avviso sulle assegnazioni xoz.Avviso di conversione incontrollato non previsto
public class Entity<T>
{
@SuppressWarnings("unchecked")
public <TX> Entity<TX> typed(Class<TX> type)
{
return (Entity<TX>) this;
}
@SuppressWarnings("unchecked")
public static <TX> Entity<TX> typed(Entity<?> entity, Class<TX> type)
{
return (Entity<TX>) entity;
}
public static void main(final String[] args)
{
final Entity<?> a = new Entity<Integer>();
final Entity b = (Entity) a;
final Entity<Integer> x = a.typed(Integer.class);
final Entity<Integer> y = b.typed(Integer.class);
final Entity<Integer> z = typed(b, Integer.class);
}
}
L'entità, 'b', non è tipizzata dopo il cast da' a', quindi non è tipizzata quando la si ricongiunge con 'b.typed (Integer.class)'.I tipi generici sono diversi dai tipi di classe; non vengono mantenuti quando "downcasted". – Vulcan