Java AddLinkEntry类是原始类型。对泛型类型AddLinkEntry类的引用<;T>;应该参数化

Java AddLinkEntry类是原始类型。对泛型类型AddLinkEntry类的引用<;T>;应该参数化,java,warnings,suppress-warnings,Java,Warnings,Suppress Warnings,我有下面一行抛出“AddLinkEntry是原始类型。对泛型类型AddLinkEntry的引用应该参数化”警告 List addLinkCache=new ArrayList(); 还有AddLinkEntry类 public class AddLinkEntry<T> { /** * Function that Adds a link between this object and given object */ private IAddLinkToObje

我有下面一行抛出“AddLinkEntry是原始类型。对泛型类型AddLinkEntry的引用应该参数化”警告

List addLinkCache=new ArrayList();
还有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);
  }
}
公共类AddLinkEntry{
/**
*函数,用于在该对象和给定对象之间添加链接
*/
私有IAddLinkToObjectFunctional对象函数;
/**
*给定对象的ID
*/
私人身份证;
/**
*构造一个新的{AddLinkEntry}。
* 
*@param objectFunctional
*函数,用于在该对象和给定对象之间添加链接
*@param-id
*给定对象的ID
*/
public AddLinkEntry(IADDLinkToObject Functional,Id){
this.objectFunctional=objectFunctional;
this.id=id;
}
/**
*检索在该对象和给定对象之间添加链接的函数
*/
公共IADDLinkToObject功能性执行器链接{
返回对象函数;
}
/**
*检索Id
*/
公共Id getId(){
返回id;
}
@功能接口
公共接口IADDLinkToObject Functional{
/**
*在该对象和给定对象之间添加链接
* 
*@param objectNode要链接的给定对象
*/
void addLink(T objectNode);
}
}

我想知道是什么导致了警告,以及如何在不使用“抑制警告”的情况下消除警告?

我认为您还需要使用要存储的类型来参数化
AddLinkEntry

List addLinkCache=new ArrayList()

我认为您还需要使用要存储的类型来参数化
AddLinkEntry

List addLinkCache=new ArrayList()

正如Eran指出的,警告是由于直接使用原始类型“AddLinkEntry”,作为类泛型本身,您应该给出更具体的类型,如Integer、String等,您希望在列表中保留其实例,以便java进行静态类型检查,否则您只是在邀请“Classcastexception”

所以,
List
可以正常工作

有关警告的详细信息,因为它可能不是用简单的javac编写的


use flag
-Xlint:rawtypes

正如Eran所指出的,警告是由于直接使用了原始类型“AddLinkEntry”,作为类泛型本身,您应该给出更具体的类型,如Integer、String等,您希望将其实例保存在列表中,以便java进行静态类型检查,否则您只是在邀请“Classcastexception”

所以,
List
可以正常工作

有关警告的详细信息,因为它可能不是用简单的javac编写的


使用标志
-Xlint:rawtypes

List
中的
AddLinkEntry
是原始类型。将其更改为
List
中的
AddLinkEntry
是原始类型。将其更改为
List
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);
  }
}