java 警告:Varargs 方法可能会因不可重用的 varargs 参数而造成堆污染
我在JDK 1.8上使用IntelliJ IDEA和javac。我有以下代码:
class Test<T extends Throwable>
{
@SafeVarargs
final void varargsMethod( Collection<T>... varargs )
{
arrayMethod( varargs );
}
void arrayMethod( Collection<T>[] args )
{
}
}
IntelliJ IDEA不会突出显示上述代码中的任何内容作为警告。但是,在编译时,以下行出现在“消息”视图的“制作”选项卡中:
警告:(L, C) java: Varargs 方法可能从不可再生的 varargs 参数 varargs 造成堆污染
注意#1:我已经指定了.@SafeVarargs
注意 #2:指向作为参数传递给Warning:(L,C)
varargs
arrayMethod()
假设我知道我在做什么,并且假设我非常确定不会有堆污染,或者我保证我不会以一些可能导致堆污染的时髦方式调用此方法,我需要做些什么来抑制此警告消息?
注意:关于 varargs 方法的 stackoverflow 有很多问题,但似乎没有一个可以解决这个特定问题。事实上,整个interwebz在这个特定问题的答案上似乎相当糟糕。