Может ли кто-нибудь объяснить, почему существует нетипизированное уведомление о преобразовании в строке назначения y? Обратите внимание, что нет никаких предупреждений о назначении x или z.Неожиданное предупреждение о непроверенной конверсии
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);
}
}
Ваша сущность, 'b', является нетипизированной после броска из' a', поэтому она нетипизируется, когда вы конвертируете ее с помощью 'b.typed (Integer.class)'.Общие типы не похожи на типы классов; они не сохраняются, когда «опущены». – Vulcan