javacで発生した場合に、欠落しているserialversionUID警告をエラーにエスカレートし、ビルドに失敗したい。JavacでVarargs警告を無視する
私は私のAntタスクに以下を追加しました:私は
<compilerarg value="-Xlint:-varargs"/>
<compilerarg value="-Xlint:serial"/>
<compilerarg value="-Werror"/>
にjavacタスクを変更しようとした
non-varargs call of varargs method with inexact argument type for last parameter;
cast to java.lang.Object for a varargs call
cast to java.lang.Object[] for a non-varargs call and to suppress this warning
:
<compilerarg value="-Xlint:serial"/>
<compilerarg value="-Werror"/>
ただし、ビルドも可変引数の警告で失敗します
しかし、それは違いはありませんでした。コンパイラでこれらの警告を無視し、serialversionUIDでのみ失敗するようにするにはどうすればよいですか?私はAntの1.9.4とjavac 1.6u37、1.7u79と試みたと1.8u92を使用しています
Exampleクラスは:
package com.stackoverflow.compiler;
import java.io.Serializable;
public class Main implements Serializable {
public static void foo(Object... args) {
System.out.println("Test foo");
}
public static void main(String[] args) {
// is args supposed to be an array of objects
// or the only element in an array?
foo(args);
}
}
これで問題は解決しません。また、メソッドfoo(Object ...)の最後の引数のType String []は、varargパラメータの型と正確に一致しません。Object []へキャストして、varargs以外の呼び出しを確認するか、型の個々の引数を渡しますvarargs呼び出しのオブジェクト。 " – opticyclic
@opticyclic重要なのは、 'ecj'を使うと、さまざまな診断を警告やエラーに個別に微調整することができるという点です。表示される診断は、デフォルトで警告として分類されます。私はその警告を完全に抑制する方法をカバーするために答えを更新します。 –
あなたは正しいです。私は同じクラスに2つの例があるので、出力を混乱させました。 – opticyclic