从Java参数创建数组

我已经实现与数组的数组列表:

public class ArrayIndexList<E> { private E[] A; private int capacity = 5; // Initial Array Size private int size = 0; public ArrayIndexList() { A = (E[]) new Object[capacity]; } public void add(int index, E element) { /* if array is full: * 1. double the array size * 2. copy elements to the new array */ if (size == capacity) { capacity = capacity * 2; E[] B = (E[]) new Object[capacity]; for (int i = 0;i < size;i++) B[i] = A[i]; A = B; } // shift the elements up for (int i = size - 1;i >= index;i--) A[i + 1] = A[i]; // add new element A[index] = element; size = size + 1; } public E remove(int index) { E temp = A[index]; //shift elements down for (int i = index;i < size - 1;i++) A[i] = A[i + 1]; size = size - 1; return temp; } }

这是工作,但编译器会发出警告:

Type safety: Unchecked cast from Object[] to E[] ArrayIndexList.java

什么是错误的代码?

--------------解决方案-------------

铸件无法检查运行时,因此将发出警告。 随着最新的编译器,可以使用相应的警告@SuppressWarnings("unchecked")

是它有用吗?

http://mindprod.com/jgloss/compileerrormessages.html#TYPESAFETYERASED

你实际上是一种说谎当你从施放Object[]E[]因为数组在运行时持有其组件类型,因此它不是在现实中可能从投Object[]一个更具体的数组类型; 但因为你是类型参数E公司的范围内, E[]将被删除,不会导致错误。

这实际上是你能做的最好的,因为唯一的其他选择是有变量“A”是类型的Object[]但你必须投进去E每次你得到的东西出来的时候,这将产生更选中投警告。 有没有办法可以摆脱它,所以你必须要镇压他们。 (除非你换一个预制的类型,做你的类做什么样ArrayList ,它本身做同样的事情,并有内部抑制这些警告)

分类:java的 时间:2015-03-15 人气:0
本文关键词: Java中,泛型,数组列表
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.581 (s). 10 q(s)