我终于试图摆脱Java 7友好生成的所有新的编译器警告。我留下这两个我无法理解。有没有办法摆脱它们而不压制它们?一些Java 7的警告 - 如何删除它们
构建一般类型对象的数组(我在哪里可以把在创建阵列?):
static final int N = 10;
//warning: [unchecked] unchecked conversion
static final Set<Widget>[] queued = new ConcurrentSkipListSet[N];
//required: Set<Widget>[]
//found: ConcurrentSkipListSet[]
通用可变参数(好像几乎无处不在我接受泛型类型的可变参数发生):
class Foo<T> {
//warning: [unchecked] Possible heap pollution from parameterized vararg type T
public void add(T... entries) {
//where T is a type-variable:
//T extends Object declared in class Foo
BTW:我已经有:
// Add many entries to the list.
public void add(List<T> entries) {
// ...
}
// Add a number of entries.
public void add(T... entries) {
// Make a list of them.
add(Arrays.<T>asList(entries));
}
哇!一举解决了我的问题。我不明白'newArray(N)'实际上是如何将一个正确类型的数组传递给'newArray',而是向您传达您的先生。顺便说一句 - 我把它调整为static final ConcurrentSkipListSet [] queued = DoubleBufferedList。> newArray(N);'为我的测试。 –
OldCurmudgeon
2013-03-22 10:27:03
为什么不简单'static final ConcurrentSkipListSet [] queued = DoubleBufferedList.newArray(N);' –
ZhongYu
2013-03-22 11:13:03
因为当我追踪到它的形式给了我一个Object []'在第二个参数。我有一个'ConcurrentSkipListSet []',对我来说感觉更好。我意识到这是一个非常小的差异,因为它们基本上都是Object []'。 – OldCurmudgeon 2013-03-22 11:43:39