在 Java 中,Optional<T> 是用来避免 null 的安全容器。所谓“转换 Optional 类型”,通常包含以下几类常见操作:
map:对值进行转换(返回普通结果)Optional<String> opt = Optional.of("hello");
Optional<Integer> lengthOpt = opt.map(String::length);
flatMap:转换后仍是 Optional(避免 Optional 嵌套)Optional<String> opt = Optional.of("123");
Optional<Integer> numOpt = opt.flatMap(s -> Optional.of(Integer.parseInt(s)));
Optional → Optional<T>(类型转换)Optional<? extends Number> opt = Optional.of(1);
Optional<Number> numOpt = (Optional<Number>) opt; // 不推荐
更推荐用 map:
Optional<Integer> intOpt = Optional.of(1);
Optional<Number> numOpt = intOpt.map(i -> (Number) i);
String s = opt.get(); // 不推荐(可能 NoSuchElementException)
String s = opt.orElse("default");
String s2 = opt.orElseGet(() -> "default");
String s = opt.orElseThrow(() -> new RuntimeException("missing"));
Optional<String> opt = Optional.of(value); // value 不能为 null
Optional<String> opt2 = Optional.ofNullable(value); // 允许 null
Optional<String> empty = Optional.empty();
Optional<String> opt = Optional.of("a");
Stream<String> stream = opt.stream();
Optional<User> userOpt = ...;
String city = userOpt
.map(User::getAddress)
.map(Address::getCity)
.orElse("Unknown");
| 场景 | 方法 |
|---|---|
| 转换值 | map |
| 转换值为 Optional | flatMap |
| 提供默认值 | orElse / orElseGet |
| 抛异常 | orElseThrow |
| 普通 → Optional | of / ofNullable |
| Optional → Stream | stream() |
如果你指的是 “Optional 转其他类型(如 JSON / 数据库 / 第三方库)”,可以告诉我具体场景。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。