温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何转换 java Optional 类型

发布时间:2026-09-19 07:48:19 来源:亿速云 阅读:88 作者:小樊 栏目:编程语言

在 Java 中,Optional<T> 是用来避免 null 的安全容器。所谓“转换 Optional 类型”,通常包含以下几类常见操作:


1. 转换内部值(map / flatMap)

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)));

2. Optional 类型之间的转换

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);

3. Optional 与其他类型互转

Optional → 普通值(可能抛异常)

String s = opt.get(); // 不推荐(可能 NoSuchElementException)

安全获取

String s = opt.orElse("default");
String s2 = opt.orElseGet(() -> "default");

为空时抛异常

String s = opt.orElseThrow(() -> new RuntimeException("missing"));

4. 普通值 → Optional

Optional<String> opt = Optional.of(value);      // value 不能为 null
Optional<String> opt2 = Optional.ofNullable(value); // 允许 null
Optional<String> empty = Optional.empty();

5. Optional 转 Stream(Java 9+)

Optional<String> opt = Optional.of("a");
Stream<String> stream = opt.stream();

6. 实战示例(链式转换)

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 / 数据库 / 第三方库)”,可以告诉我具体场景。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手