Есть ли эквивалент java @SuppressWarnings в JSP

Вы получаете этот результат, потому что ваши proc методы не перекрывают друг друга.

Самый простой способ увидеть это - добавить @Override -аннотацию:

static class Z extends Y {
    public Z() {
        v += 9;
    }

    @Override
    public void proc(Z p) {
        System.out.println(34);
    }
}

Это не удастся скомпилировать с сообщением об ошибке

Метод proc ( Test.Z) типа Test.Z должен переопределить или реализовать метод супертипа

Рекомендуется добавлять эту аннотацию всякий раз, когда вы собираетесь переопределить метод - таким образом компилятор может проверить, Вы действительно делаете.

Чтобы исправить ошибку и переопределить метод для получения ожидаемого результата, вы можете изменить тип параметра на X:

static class Z extends Y {
    public Z() {
        v += 9;
    }

    @Override
    public void proc(X p) {
        System.out.println(34);
    }
}

Теперь он снова компилируется и выдает 34.


В вашем примере произошло то, что вместо переопределения ваш класс Z добавил перегруженный метод void proc(Z p) в дополнение к к методу void proc(X p) из X. Разрешение перегрузки основано на типе времени компиляции, поэтому только метод из X доступен и выбирается. Этот метод переопределен в Y, так что это то, что фактически выполняется во время выполнения.

Следовательно, другой способ получить ожидаемый результат - оставить X, Y и Z без изменений и изменить тип ссылки x на Z:

public static void main(String[] args) {
    Z x = new Z();
    Y y = new Z();
    Z z = new Z();
    x.proc(z);//// 1
    System.out.println(y.getV());
}
[ 1131] Эта версия вызывает перегруженный метод из Z, потому что это наиболее специфическая перегрузка для параметра типа Z.

9
задан Vinze 28 January 2009 в 14:03
поделиться

3 ответа

Да, просто используйте:

<%! @SuppressWarnings("unchecked") %>
25
ответ дан 4 December 2019 в 08:17
поделиться

Если Вы получаете предупреждения в коде, сгенерированном от JSP (или во встроенном коде в JSP), одно решение состоит в том, чтобы переместить проблемный код в Сервлет или в служебный класс. Тем путем можно отметить его до содержания основы, и JSP имеет меньше кода Java в нем. Взаимовыгодный!

2
ответ дан 4 December 2019 в 08:17
поделиться

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

-1
ответ дан 4 December 2019 в 08:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: