2

私は Java 8 と e(fx)clipse で遊んでいて、いろいろ試しています。null 許容文字列からすべての a を削除する map 関数を適用しようとしています。Optional<Object>ただし、 map がの代わりに返されるため、後続のフィルター関数にはコンパイル エラーが発生していますOptional<String>

私は何を間違っていますか?

Optional.ofNullable(string)
    .map( s -> s.replaceAll("a", "") )
    .filter( s -> !((String) s).isEmpty() ) //notice the need for cast
    .map( s -> "String: " + s )
    .ifPresent(System.out::println);
4

2 に答える 2

3

これはエラーなしでコンパイルされるため、後の Java 8 ビルドで問題が既に修正されているようです。

public static void main(String[] args) {
    Optional.ofNullable("x")
            .map(s -> s.replaceAll("a","b"))
            .filter(s -> !s.isEmpty());
}

私のJavaバージョン:

$ java -version

java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b108)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b50, mixed mode)

Eclipse は独自の Java コンパイラを使用するため、Eclipse 内でエラーが表示される場合、Java JDK ビルド番号は関係ないことに注意してください。javacコマンドラインからクラスをコンパイルしてみてください。

于 2013-10-13T09:23:20.413 に答える