Eclipse - Показать @SuppressWarnings (value = {"all"}), когда добавлены данные и конструктор lombok - PullRequest
0 голосов
/ 14 марта 2019

У меня есть класс с ломбками @Data и @AllArgsConstructor(access = AccessLevel.PUBLIC):

@Data
@AllArgsConstructor(access = AccessLevel.PUBLIC)
public class ResponseVO implements Serializable {
    private static final long serialVersionUID = 3461582576096529916L;
    @JacksonXmlProperty(localName = "amount", isAttribute = true)
    String amount;
 }

Когда я использую конструктор

new ResponseVO("22222");

Я получаю предупреждение во всплывающей подсказке при наведении курсора на метод конструктора:

ResponseVO.ResponseVO(String amount)
@SuppressWarnings(value={"all"}) 

Почему это предупреждение добавлено? без @Data исчезает

Класс декомпилируется без каких-либо предупреждений:

public class ResponseVO implements Serializable {
    private static final long serialVersionUID = 3461582576096529916L;
    @JacksonXmlProperty(localName = "amount", isAttribute = true)
    String amount;

    public String getAmount() {
        return this.amount;
    }

    public void setAmount(String amount) {
        this.amount = amount;
    }

    public boolean equals(Object o) {
        if (o == this) {
            return true;
        } else if (!(o instanceof ResponseVO)) {
            return false;
        } else {
            ResponseVO other = (ResponseVO) o;
            if (!other.canEqual(this)) {
                return false;
            } else {
                String this$amount = this.getAmount();
                String other$amount = other.getAmount();
                if (this$amount == null) {
                    if (other$amount != null) {
                        return false;
                    }
                } else if (!this$amount.equals(other$amount)) {
                    return false;
                }

                return true;
            }
        }
    }

    protected boolean canEqual(Object other) {
        return other instanceof ResponseVO;
    }

    public int hashCode() {
        boolean PRIME = true;
        byte result = 1;
        String $amount = this.getAmount();
        int result1 = result * 59 + ($amount == null ? 43 : $amount.hashCode());
        return result1;
    }

    public String toString() {
        return "ResponseVO(amount=" + this.getAmount() + ")";
    }

    public ResponseVO(String amount) {
        this.amount = amount;
    }
}

1 Ответ

1 голос
/ 14 марта 2019

Это не предупреждение, это обычная всплывающая подсказка Eclipse, которая появляется во всех классах, методах и т. Д. Эти всплывающие подсказки показывают JavaDoc соответствующего элемента (который в данном случае пуст), а также перечисляют все аннотации для элемента.И именно поэтому вы видите @SuppressWarnings: он генерируется Lombok, чтобы избежать выдачи компилятором предупреждений о сгенерированном Lombok коде.

Остается вопрос, почему Lombok генерировал эти аннотации подавления.Как правило, код Lombok не будет выдавать никаких предупреждений.Однако новые версии языка Java или версии компилятора могут привести к появлению новых типов предупреждений или новых устаревших версий.Запуск неадаптированной версии Lombok, ориентированной на более новую версию Java, может выдавать предупреждения.Поскольку пользователи не смогут исправить эти предупреждения, эти предупреждения будут подавлены.Кроме того, добавление @SuppressWarnings("all") также подавляет нестандартные предупреждения, например, от строк кода или в анализе кода, интегрированном в IDE, например IntelliJ IDEA.

...