java - AddLinkEntry 类是原始类型。对泛型类型 AddLinkEntry 类的引用应该参数化
问题描述
我有以下行抛出“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);
}
}
我想知道是什么导致了警告以及如何在不使用抑制警告的情况下摆脱它?
解决方案
正如 Eran 还指出的那样,警告是由于直接使用原始类型 "AddLinkEntry" ,作为类泛型本身,您应该提供更具体的类型,如 Integer、String 等,您希望将其实例保存在列表中以进行静态类型检查java,否则你只是在邀请“Classcastexception”。
所以,List<AddLinkEntry<SpecificType>>
会正常工作。
有关警告的详细信息,因为它可能不会出现在简单的 javac 中,
使用标志 -Xlint:rawtypes
推荐阅读
- ruby-on-rails - 来自不同型号的链和订单
- javascript - CSS Scale 和 Transform 导致重叠
- angular - 通过浏览器访问clockify API返回身份验证错误
- java - 找到字符串的公共前缀的最佳方法是什么?
- azure - 处理从 Hive 到 Blob 文件到 Azure DataWarehouse 的数据时出现数据长度问题
- scala - 如何正确创建带有格式化日期的字符串?
- java - server.tomcat.max-threads VS corePoolSize VS spring.datasource.tomcat.max
- css - 如何防止多轮播中的图像相互重叠?
- c# - 为什么我们不能通过.net中的对象访问静态方法
- gnuplot - gnuplot:如何与 NaN 进行比较?