Класс AddLinkEntry является необработанным типом. Ссылки на универсальный тип AddLinkEntry Class <T>должны быть параметризованы - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть следующая строка, которая выдает «AddLinkEntry является необработанным типом. Ссылки на универсальный тип AddLinkEntry должны быть параметризованы» warning

List<AddLinkEntry> addLinkCache = new ArrayList<AddLinkEntry>();

и есть класс AddLinkEntry

public class AddLinkEntry<T> {

  /**
   * Function that Adds a link between this object and given object
   */
  private IAddLinkToObjectFunctional<T> objectFunctional;

  /**
   * ID of given object
   */
  private Id id;

  /**
   * Constructs a new {AddLinkEntry<T>}.
   * 
   * @param objectFunctional
   *        Function that Adds a link between this object and given object
   * @param id
   *        ID of given object
   */
  public AddLinkEntry(IAddLinkToObjectFunctional<T> objectFunctional, Id id) {
    this.objectFunctional = objectFunctional;
    this.id = id;
  }

  /**
   * Retrieve a function that Adds a link between this object and given object
   */
  public IAddLinkToObjectFunctional<T> executeLinkage() {
    return objectFunctional;
  }

  /**
   * Retrieve an Id
   */
  public Id getId() {
    return id;
  }

  @FunctionalInterface
  public interface IAddLinkToObjectFunctional<T> {

    /**
     * Adds a link between this object and given object
     * 
     * @param objectNode a given object to link
     */
    void addLink(T objectNode);
  }
}

Хотелось бы узнать, что вызывает предупреждение и как от него избавиться, не используя подавляющие предупреждения?

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Как также указал Эран, предупреждение происходит из-за прямого использования необработанного типа «AddLinkEntry», так как сам класс является универсальным, вы должны указать более конкретный тип, например Integer, String и т. Д., Экземпляр которого вы хотите сохранить в списке для статического проверка типов с помощью Java, в противном случае вы просто приглашаете "Classcastexception".

Итак, List<AddLinkEntry<SpecificType>> будет работать нормально.

Для получения подробных сведений о предупреждении, которое может не входить в простой javac,

использовать флаг -Xlint:rawtypes

0 голосов
/ 03 сентября 2018

Я думаю, что вам также необходимо параметризовать AddLinkEntry с типом, который вы хотите сохранить, например List<AddLinkEntry<String>> addLinkCache = new ArrayList<AddLinkEntry<String>>();

...