Аннотация SafeVarargs
Аннотация SafeVarargs применяется к методам
и конструкторам, которые принимают переменное
число аргументов (varargs) обобщённого типа.
Она сообщает компилятору, что тело такого метода
не выполняет потенциально небезопасных операций
с массивом varargs, и подавляет предупреждение
о возможном «загрязнении кучи» (heap pollution).
Аннотация не имеет параметров.
Использование SafeVarargs возможно только
для методов, объявленных как static,
final или private, а также
для конструкторов. Для обычных переопределяемых
методов компилятор не позволит её применить.
Синтаксис
@SafeVarargs
static <T> void methodName(T... args)
{
// тело метода
}
Пример
Давайте создадим статический метод с varargs
обобщённого типа и пометим его аннотацией
SafeVarargs, чтобы компилятор не выдавал
предупреждение:
import java.util.List;
public class Main
{
@SafeVarargs
static <T> void printAll(T... items)
{
for (T item : items)
{
System.out.println(item);
}
}
public static void main(String[] args)
{
printAll("a", "b", "c");
printAll(1, 2, 3);
}
}
Результат выполнения кода:
"a"
"b"
"c"
1
2
3
Пример
Аннотацию SafeVarargs можно применять
и к конструкторам с переменным числом аргументов:
import java.util.List;
public class Main
{
private final List<Object> items;
@SafeVarargs
public Main(Object... items)
{
this.items = List.of(items);
}
public static void main(String[] args)
{
Main res = new Main("a", "b", "c");
System.out.println(res.items);
}
}
Результат выполнения кода:
[a, b, c]
Смотрите также
-
аннотация
SuppressWarnings,
которая подавляет предупреждения компилятора -
аннотация
FunctionalInterface,
которая помечает функциональные интерфейсы -
аннотация
Override,
которая указывает на переопределение метода -
аннотация
Deprecated,
которая помечает устаревшие элементы