【发布时间】:2015-05-08 23:04:17
【问题描述】:
我在 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 不会突出显示上述代码中的任何内容作为警告。但是,编译时,“Messages”视图的“Make”选项卡中会出现以下行:
警告:(L, C) java: Varargs 方法可能导致堆污染 不可具体化 varargs 参数 varargs
注意#1:我已经指定了@SafeVarargs。
注意 #2:Warning:(L,C) 指向 varargs 作为参数传递给 arrayMethod()
假设我知道自己在做什么,并假设我很确定不会有堆污染,或者我保证不会以某种可能导致堆污染的时髦方式调用此方法,我需要做什么来禁止显示此警告消息?
注意:stackoverflow 上有很多关于 varargs 方法的问题,但似乎没有一个可以解决这个特定问题。事实上,整个 interwebz 似乎对这个特定问题的回答都相当差。
【问题讨论】:
标签: java generics intellij-idea variadic-functions