Kann jemand erklären, warum es auf der Zuweisungszeile eine Warnung wegen nicht typisierter Konversion gibt? Beachten Sie, dass bei X- oder Z-Zuweisungen keine Warnung angezeigt wird.Unerwartete ungeprüfte Konvertierungswarnung
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);
}
}
Ihre Entität 'b' ist nach der Umwandlung von' a' nicht typisiert, daher ist sie nicht typisiert, wenn Sie sie mit 'b.typed (Integer.class)' zurückkonvertieren.Generische Typen sind im Gegensatz zu Klassentypen; Sie werden nicht beibehalten, wenn sie downcasted werden. – Vulcan