我想你可以做到:
public static void main(final String[] args) { final Optional<Integer> valid = Optional.of("42") .transform(STR_TO_INT_FUNCTION) .or(Optional.<Integer>absent()); System.out.println(valid); // Optional.of(42) final Optional<Integer> invalid = Optional.of("Toto") .transform(STR_TO_INT_FUNCTION) .or(Optional.<Integer>absent()); System.out.println(invalid); // Optional.absent() final Optional<Integer> absent = Optional.<String>absent() .transform(STR_TO_INT_FUNCTION) .or(Optional.<Integer>absent()); System.out.println(absent); // Optional.absent()}private static final Function<String, Optional<Integer>> STR_TO_INT_FUNCTION = new Function<String, Optional<Integer>>() { @Override public Optional<Integer> apply(final String input) { return Optional.fromNullable(Ints.tryParse(input)); } };
当您使用Optional-> transform->或在一行中使用时 , 用法并不是 那么
笨拙(分配已转换的可选整数将产生
Optional<Optional<Integer>>)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)