[英]Do i have to cast an already generic array in java to a generic type
措词很抱歉,但也许可以更容易理解代码
public class Generic<E> implements List<E>
{
private static final int defaultSize = 10; //Default size
private int maxSize; //Maximum size of list
private int listSize; //Current # of items in list
private int curr; //Position of current element
private E[] listArray; //Array holding list elements
Generic()
{
this(defaultSize);
}
/**
* Create a new list object
* @param siz Max # of elements list can contain
*/
@SuppressWarnings("unchecked") //generic array allocation
Generic(int size)
{
maxSize = size;
listSize = curr = 0;
listArray = (E[]) new Object[size]; //create listArray
我的两个问题是:
最后一行,当我将列表创建为大小为size
的对象时,为什么在将其初始化为通用数组时,为什么必须将其转换为通用数组?
可以@SuppressWarnings("unchecked");
被解释? 我可以看到什么,但是我从未在Java书籍的任何页面上看到@SuppressWarnings
。 我们如何以@
??开始?
旁注-此代码直接来自于我的数据结构书,我正尝试对其进行分解以理解它。
E[]
:在运行时,每个泛型都被视为Object
。 您不能将listArray
初始化为new E[]
。 @SuppressWarnings
是一个注释,除命令性代码外,基本上是其他信息。 您必须unchecked
因为否则Java编译器会在遇到Object[]
到E[]
的潜在危险转换时向您发出警告。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.