При предварительной компиляции JSP с помощью компилятора Jasper (с использованием Tomcat), а затем с помощью компилятора Java я вижу javac
предупреждения, подобные этому (у меня включен флаг javac
-Xlint
):
warning: [unchecked] unchecked call to add(E) as a member of the raw type java.util.List
_jspx_dependants.add("/some-jsp.jspf");
Теперь, это "просто предупреждение", но мне нравятся чистые сборки, поэтому, естественно, я хочу избавиться от предупреждения. Конечно, я мог бы отключить -Xlint
для компиляции JSP, но -Xlint
- это хороший материал, так что он остается.
В этом примере предупреждения проблема в том, что общий синтаксис не используется. Вместо List<String>
у нас есть только List
. Я понимаю, что хорошие люди, которые пишут Джаспер, должны заботиться о тех несчастных душах, которые остаются запертыми в мире до Java5. Это хорошо, но почему я должен терпеть эти предупреждения?
Существует ли какой-либо известный способ устранения предупреждений javac, вызванных исходным кодом Java, созданным JSP-компилятором Jasper? Меня не интересует решение, специфичное для IDE (хотя это было бы частичное решение для некоторых людей, которые используют конкретную IDE). Я ищу общеприменимое решение.
Сканирование исходного кода Jasper не выявило каких-либо переключателей «Java 5+», которые могли бы вызвать генерацию общего синтаксиса. На самом деле наоборот я нашел это:
apache-tomcat-6.0.18-src/java/org/apache/jasper/compiler/Generator.java:494: out.printin("_jspx_dependants = new java.util.ArrayList(");
, который ясно показывает жестко закодированный код, лишенный всякой надежды на внедрение элегантного общего синтаксиса.