Ошибка в com.google.common.base.Joiner.on()

java.lang.NullPointerException: null
    at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:770) ~[spigot-1.12.2.jar:git-Spigot-c3093ef-7e94e65]
    at com.google.common.base.Joiner.toString(Joiner.java:454) ~[spigot-1.12.2.jar:git-Spigot-c3093ef-7e94e65]
    at com.google.common.base.Joiner.appendTo(Joiner.java:106) ~[spigot-1.12.2.jar:git-Spigot-c3093ef-7e94e65]
    at com.google.common.base.Joiner.appendTo(Joiner.java:154) ~[spigot-1.12.2.jar:git-Spigot-c3093ef-7e94e65]
    at com.google.common.base.Joiner.join(Joiner.java:197) ~[spigot-1.12.2.jar:git-Spigot-c3093ef-7e94e65]
    at com.google.common.base.Joiner.join(Joiner.java:187) ~[spigot-1.12.2.jar:git-Spigot-c3093ef-7e94e65]
    at com.google.common.base.Joiner.join(Joiner.java:205) ~[spigot-1.12.2.jar:git-Spigot-c3093ef-7e94e65]

Код:

public static String join(String[] args, int ignored, String separator) {

    if (ignored > -1)
        args = (String[]) ArrayUtils.remove(args, ignored);

    String combined = Joiner.on(separator).join(args); // ERROR HERE

    return combined.substring(0, combined.length());
}

Я пытаюсь выполнить объединение массива строк с разделителем и возможность игнорировать аргумент при желании. Однако я сталкиваюсь с этой ошибкой, которой не было около недели назад. Этот код работал отлично.... теперь его нет. Я попытался вставить нулевую проверку для переменной "args", но безрезультатно. Что-то изменилось с пакетом, из которого я тяну?

1 ответ

Решение

Я не думаю, что переменная args является нулевой, скорее она содержит нулевое значение. Joiner по умолчанию в Guava является враждебным по отношению к null, но его можно настроить так, чтобы допускать null одним из двух способов:

  • Joiner.on(separator).skipNulls()
  • Joiner.on(separator).useForNull(placeHolder)

если вы не используете ни один из них, нулевое значение внутри вашего массива вызовет исключение NullPointerException, которое явно упоминается в Joiner документы:

Если ни skipNulls() ни useForNull(String) указано, методы соединения NullPointerException если какой-либо элемент null,

Другие вопросы по тегам