1

次の Java コードは Eclipse で赤く強調表示されていますが、正常にコンパイルされます。IDE エラーは次のとおりです。

Optional<Runnable>タイプが一致しません。タイプから 変換できませんOptional<new Runnable>

コンパイラは、推論されたジェネリックからこれで問題ないはずですが、私の IDE は失敗します。Eclipse のどこかに間違った設定がありますか?

Optional<Runnable> o;

o = Optional.of(new Runnable() {
  @Override
  public void run() {

  }
});
4

3 に答える 3

1

これは次のようになります。

Optional <Runnable> o;

o = Optional.<Runnable>of (new Runnable () {
    @Override
    public void run () {
        /* your code here */
    }
});
于 2013-02-12T06:45:07.030 に答える
0

他の人が指摘するように、2 行または Optional.<Optional>of() が必要です。

javac (jdk 1.7) が失敗する:

エラー: 互換性のない型
  o = Optional.of(新しいRunnable() {
                 ^
  必須: オプション<Runnable>
  見つかった: Optional<<anonymous Runnable>>
1 エラー

javac (jdk 1.6) も失敗します。

互換性のないタイプ
found : オプション<<anonymous java.lang.Runnable>>
必須: オプション<java.lang.Runnable>
  o = Optional.of(新しいRunnable() {
                 ^
1 エラー

したがって、これは定義済みの Java 動作のようですが、理由はわかりません。

于 2013-02-12T07:13:16.707 に答える