我正在编写一个小型的排序函数包,它们可以处理类SortableArray<T extends Comparable<T>>
的对象,因为我希望能够对像int
之类的原始对象进行排序,我需要将基元包装在一个class对象,在本例中具体为Integer
。所以,我重载了我的构造函数以获取类型为int
的数组,将每个数据包装在Integer
中,将其存储在数组temp
中,然后将GenList
指向{ {1}}。我添加了一个temp
的强制转换,以使IDE高兴,但现在我有一个未经检查的类型警告。
这是我的代码:
(T[])
我应该压制警告,还是采用更安全的方法?
感谢您的回复。
答案 0 :(得分:4)
这可能有问题的原因是我试图做这样的事情:
SortableArray<String> array = new SortableArray<>(new int[] { 3, 9, 9 });
它看起来很荒谬,但它完全合法,当你想在其他地方使用它时会咬你。
您可能需要考虑的是静态工厂方法,可能如下所示:
public static SortableArray<Integer> createSortableArrayFromInts(int[] theList)
{
Integer[] temp = new Integer[theList.length];
for(int i = 0; i < theList.length; i++) {
temp[i] = Integer.valueOf(theList[i]);
}
return new SortableArray<Integer>(temp);
}