我的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
註釋會不安全?