3

私はここでトリックを見つけることができません: リストにはこれだけ多くの要素が含まれているが、それらのいくつかは有効ではないことを意味するために、オプションのオブジェクトのリストを返す関数が必要です。

public Optional<String> getMyObjects() {
  List<Optional<String>> result = Lists.newArrayListWithCapacity(2);

  result.add(Optional.of("This value is valid"));
  result.add(Optional.absent()); // Compiler error

  return result;
}

これはコンパイルされません:

The method add(Optional<String>) in the type List<Optional<String>> is not 
applicable for the arguments (Optional<Object>)

どのように言えますか?キャストを試みましたが成功しませんでした

4

3 に答える 3

8

試す:

result.add(Optional.<String>absent());

パラメーター化されたメソッド明示的な型引数の指定について詳しくは、非公式の優れた Java Generics FAQをご覧ください。

于 2013-06-04T10:18:13.163 に答える
4

使用する

result.add(Optional.<String>absent())

ジェネリック型を強制します。

または、コンパイラーに推測させるには、次のようにします。

Optional<String> o = Optional.absent();
result.add(o);
于 2013-06-04T10:18:32.133 に答える
3

試す:

result.add(Optional.<String> absent());

Absent ()メソッドはパラメータ化されています。

于 2013-06-04T10:18:21.507 に答える