[英]Collection of abstract generic class, raw type warning
我有以下类层次结构:
public abstract class Property<T>
{
private long id;
private String name;
private T value;
/*setters and getters*/
}
public class NumberProperty extends Property<Integer>
public class TextProperty extends Property<String>
...以及一个包含List<Property> properties
。 我得到“ Property is raw type. References to generic type Property<T> should be parametrized
”。 我知道为什么,但是我想拥有少数几种已知类型的属性列表(不能将属性归为抽象类)。
我的问题是:我可以忽略警告还是应该更改代码(如何?)?
如果您不关心对象是哪种类型,请使用Property<?>
,这将指示编译器您知道自己在做什么。
List<Property<?>> list;
Java中的集合是同类的,因此将不同类型的值放入其中是错误的。 请注意, Property<Integer>
与Property<String>
并不是层次结构相关的-这是两种不同的类型,Java类型系统将无法表示您的列表,其中某些属性是字符串和一些整数。 您唯一的选择是失去类型安全性。
由于这是一个警告,因此您始终可以选择忽略它;)。
该警告通知您,当拥有List<Property>
,您不知道Property
类中<T>
含义。 如果不确定,则可以使用List<Property<?>>
表示可以进行任何操作。
请参阅Oracle的泛型教程以了解有关此主题的更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.