Java AddLinkEntry类是原始类型。对泛型类型AddLinkEntry类的引用<;T>;应该参数化
我有下面一行抛出“AddLinkEntry是原始类型。对泛型类型AddLinkEntry的引用应该参数化”警告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
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);
}
}