何も言われているようは、JDK5、コメントを追加しました6.唯一の間を削除されたJava言語はではありませんが、インターフェイスメソッドで許容されて@Override
注釈ました。したがって、あなたは変化を壊す唯一の原因として図書館の相違点が残っています、私は恐れています。
これらはコアAPIであっても存在します。後方互換性の暴動の珍しいフィットで、彼らはExecutorService
インターフェイス上のいくつかのメソッドの署名を変更しました。これは、メソッドのジェネリックシグネチャが過度に制限されていたためです。これは純粋なライブラリの変更でした(しかし、java.util
の一部であり、かなりコアライブラリ)。言語レベルの変更とは関係ありません。例えば
、from JDK5:
<T> T invokeAny(Collection<Callable<T>> tasks)
to JDK6:
<T> T invokeAny(Collection<? extends Callable<T>> tasks)
これはJDK5にこのインタフェースを実装するコードが含まれている任意のプログラムは、JDK6に対してコンパイルされていないことを意味します。スニペットは簡単に作成できます。あなたのIDEがJDK5インターフェイスの空の実装を作成してから、JDK6に対して構築するだけです。
注:以前のバージョン(すなわちコレクションが呼び出し可能ないくつかのサブクラスが入力されて)それ以降のバージョンがないのに対し、List<MyCallable<String>>
ようなパラメーターを受け入れてないので、ワイルドカードを加えた。
なぜあなたはeclipseでコンパイラレベルを変更しないのですか? –
@Diago、 "これはコンパイラレベルが正しく設定されていることを確認する"という質問からです。 –
JDK5と6の間で削除された言語には何もありません。追加されたのは、インタフェースメソッドのオーバーライド注釈であったため、キーワードではありませんでした。したがって、あなたは図書館の相違に悩まされています、私は恐れます –