我的query
方法使用org.hibernate.Session
便于查询我的持久层。下面是该方法的代码:@SafeVarargs使用通用返回类型的可变参数法
它提出了以下警告:
类型的安全性:通过潜在的堆污染VARARGS参数exampleEntities
是否可以安全使用@SafeVarargs
注解在这种情况下?
据我所知,只要我没有初始化本地Object[]
与exampleEntities
,那么我没事。但这看起来不正确。
此方法是类似于the Java Specification §9.6.3.7提到的方法java.util.Collections.addAll
,其被注解为@SafeVarargs
。 This answer讨论了警告,他说,一般下面的代码是安全的:
@SafeVarargs
void foo(T... args) {
for (T x : args) {
// do stuff with x
}
}
但我query
方法的形式为:
<T> List<T> query(T... args) {
Foo foo = new Foo();
for (T x : args) {
foo.add(x);
}
return (List<T>) foo.list();
}
那么,有没有的情况下@SafeVarargs
注释会不安全?