我在这方面遇到了一些困难,但我想出了一些我会尽可能简单地分享的东西。
我对泛型的经验仅限于集合,因此我在类定义中使用它们,例如:
public class CircularArray<E> {
其中包含数据成员:
private E[] data;
但是你不能创建和数组的泛型类型,所以它有方法:
@SuppressWarnings("unchecked")
private E[] newArray(int size)
{
return (E[]) new Object[size]; //Create an array of Objects then cast it as E[]
}
在构造函数中:
data = newArray(INITIAL_CAPACITY); //Done for reusability
这适用于泛型泛型,但我需要一个可以排序的列表:Comparables 列表。
public class SortedCircularArray<E extends Comparable<E>> {
//any E that implements Comparable or extends a Comparable class
其中包含数据成员:
private E[] data;
但是我们的新类抛出 java.lang.ClassCastException:
@SuppressWarnings("unchecked")
private E[] newArray(int size)
{
//Old: return (E[]) new Object[size]; //Create an array of Objects then cast it as E[]
return (E[]) new Comparable[size]; //A comparable is an object, but the converse may not be
}
在构造函数中一切都是一样的:
data = newArray(INITIAL_CAPACITY); //Done for reusability
我希望这会有所帮助,如果我犯了错误,我希望我们更有经验的用户能纠正我。