Мой метод query
облегчает запросы к моему уровню сохранения с использованием org.hibernate.Session
. Вот код метода:@SafeVarargs в методе vararg с общим типом возврата
Это вызывает следующее предупреждение:
Тип безопасности: Потенциал загрязнения кучи через переменные аргументы параметров exampleEntities
Безопасно ли использовать @SafeVarargs
аннотацию в этом случае?
Как я понимаю, до тех пор, пока я не инициализирую местный Object[]
с exampleEntities
, тогда я в порядке. Но это не кажется правильным.
Этот метод является аналогичен методу java.util.Collections.addAll
упомянутого в the Java Specification §9.6.3.7, который аннотированной с @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
аннотацию бы не быть безопасным?