我在下面的行中抛出“ AddLinkEntry是原始类型。应该对通用类型AddLinkEntry的引用进行参数设置”警告
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);
}
}
我想知道是什么原因导致警告,以及如何在不使用禁止警告的情况下消除警告?
答案 0 :(得分:1)
我认为您还需要对AddLinkEntry
进行参数化,例如要存储的类型
List<AddLinkEntry<String>> addLinkCache = new ArrayList<AddLinkEntry<String>>();
答案 1 :(得分:1)
Eran还指出,警告是由于直接使用原始类型“ AddLinkEntry”引起的,作为类的通用类,您应提供更具体的类型,例如Integer,String等,您希望将其实例保存在静态列表中通过Java进行类型检查,否则您只是在邀请“ Classcastexception”。
所以List<AddLinkEntry<SpecificType>>
可以正常工作。
有关警告的详细信息,因为它可能不会出现在简单的javac中,
使用标记-Xlint:rawtypes