Потенциальное загрязнение кучи через varargs для функции в Java Stream API - PullRequest
0 голосов
/ 01 марта 2019

Я создал следующий метод для преобразования строки, содержащей список, разделенный запятыми, в набор, в конечном итоге применив одну или несколько функций.

Безопасно ли добавлять аннотацию @SafeVarargs в моем случае?

Функция map для Stream ожидает <? super String, ? extends String> в своей подписи, поэтому я предполагаю, что не выполняю никаких небезопасных операций.Я прав?

Можете ли вы привести примеры небезопасных операций в данном конкретном случае?

@SafeVarargs
public static Set<String> commaSeparatedToSet(String str, Function<String, String>... functions) {
    if (str != null) {
        Stream<String> stream = Stream.of(str.split(",", -1))
                .filter(item -> StringUtils.isNotBlank(item))
                .map((elem) -> elem.trim());
        if (functions != null) {
            for (Function<String, String> function : functions) {
                stream.map(function);
            }
        }
        return stream
                .collect(Collectors.toSet());
    } else {
        return Collections.emptySet();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...