{"id":2225,"date":"2018-02-08T16:14:22","date_gmt":"2018-02-08T08:14:22","guid":{"rendered":"https:\/\/ai.zhousir.top\/?p=2225"},"modified":"2026-08-18T12:09:39","modified_gmt":"2026-08-18T04:09:39","slug":"java-8-optional%e7%b1%bb%e6%b7%b1%e5%ba%a6%e8%a7%a3%e6%9e%90","status":"publish","type":"post","link":"https:\/\/ai.zhousir.top\/?p=2225","title":{"rendered":"Java 8 Optional\u7c7b\u6df1\u5ea6\u89e3\u6790"},"content":{"rendered":"<section id=\"wenyan\" style=\"font-family: system-ui, 'Apple Color Emoji', 'Segoe UI', 'Segoe UI Symbol', 'Noto Sans', Roboto, sans-serif; line-height: 1.75; font-size: 16px; color: #000000; caret-color: #000000;\" data-provider=\"WenYan\">\n<p style=\"margin: 1em 0px;\">\u8c03\u7528\u65b9\u6cd5\u62ff\u5230\u8fd4\u56de\u503c\u5374\u4e0d\u80fd\u76f4\u63a5\u5f80\u4e0b\u4f20\uff0c\u5f80\u5f80\u8981\u5148\u5224\u65ad\u662f\u4e0d\u662f <strong style=\"color: #4870ac;\">null<\/strong>\u3002Guava \u548c Scala \u7684 Option \u90fd\u5728\u89e3\u51b3\u8fd9\u4ef6\u4e8b\uff1bJava 8 \u5728\u6838\u5fc3 API \u91cc\u5f15\u5165\u4e86 <strong style=\"color: #4870ac;\">Optional<\/strong>\u3002<\/p>\n<p style=\"margin: 1em 0px;\">Javadoc \u7684\u8bf4\u6cd5\uff1a\u8fd9\u662f\u4e00\u4e2a\u53ef\u4ee5\u4e3a null \u7684\u5bb9\u5668\u5bf9\u8c61\u3002\u503c\u5b58\u5728\u5219 isPresent() \u4e3a true\uff0cget() \u8fd4\u56de\u8be5\u5bf9\u8c61\u3002\u4e0b\u9762\u6309 of\u3001ofNullable\u3001isPresent\u3001get\u3001ifPresent\u3001orElse \u7cfb\u5217\u3001map\/flatMap\/filter \u628a\u6bcf\u4e2a\u65b9\u6cd5\u914d\u793a\u4f8b\u8bb2\u5b8c\uff0c\u6700\u540e\u6709\u4e00\u4efd\u5b8c\u6574 OptionalDemo\u3002<\/p>\n<table style=\"display: table; text-align: left; overflow: auto; border-collapse: collapse; margin: 1.4em auto; max-width: 100%; table-layout: fixed; overflow-wrap: break-word; word-break: break-all;\" width=\"800\">\n<thead>\n<tr>\n<th style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top; text-align: center; font-weight: bold; color: #4870ac; background: #f7f7f7;\">\u65b9\u6cd5<\/th>\n<th style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top; text-align: center; font-weight: bold; color: #4870ac; background: #f7f7f7;\">\u53c2\u6570\u4e3a null \u65f6<\/th>\n<th style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top; text-align: center; font-weight: bold; color: #4870ac; background: #f7f7f7;\">\u5178\u578b\u7528\u9014<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">of<\/td>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">\u629b NPE<\/td>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">\u786e\u4fe1\u975e\u7a7a\u65f6\u521b\u5efa<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">ofNullable<\/td>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">\u5f97\u5230\u7a7a Optional<\/td>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">\u8fd4\u56de\u503c\u53ef\u80fd\u4e3a null<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">orElse \/ orElseGet<\/td>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">\u7ed9\u51fa\u9ed8\u8ba4\u503c<\/td>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">Get \u5728\u7f3a\u5e2d\u65f6\u624d\u8ba1\u7b97<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">orElseThrow<\/td>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">\u629b\u6307\u5b9a\u5f02\u5e38<\/td>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">\u7f3a\u5e2d\u5373\u5931\u8d25<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">map \/ flatMap<\/td>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">\u7a7a\u5219\u4ecd\u7a7a<\/td>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">\u94fe\u5f0f\u8f6c\u6362\uff0cflatMap \u7684\u51fd\u6570\u81ea\u5df1\u8fd4\u56de Optional<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">filter<\/td>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">\u4e0d\u6ee1\u8db3\u65ad\u8a00\u5219\u53d8\u7a7a<\/td>\n<td style=\"border: 1px solid #d9dfe4; padding: 9px 12px; font-size: 0.75em; line-height: 22px; vertical-align: top;\">\u6309\u6761\u4ef6\u6536\u7a84<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"margin: 1em 0px;\">\u8eab\u4e3a\u4e00\u540dJava\u7a0b\u5e8f\u5458\uff0c\u5927\u5bb6\u53ef\u80fd\u90fd\u6709\u8fd9\u6837\u7684\u7ecf\u5386\uff1a\u8c03\u7528\u4e00\u4e2a\u65b9\u6cd5\u5f97\u5230\u4e86\u8fd4\u56de\u503c\u5374\u4e0d\u80fd\u76f4\u63a5\u5c06\u8fd4\u56de\u503c\u4f5c\u4e3a\u53c2\u6570\u53bb\u8c03\u7528\u522b\u7684\u65b9\u6cd5\u3002\u6211\u4eec\u9996\u5148\u8981\u5224\u65ad\u8fd9\u4e2a\u8fd4\u56de\u503c\u662f\u5426\u4e3anull\uff0c\u53ea\u6709\u5728\u975e\u7a7a\u7684\u524d\u63d0\u4e0b\u624d\u80fd\u5c06\u5176\u4f5c\u4e3a\u5176\u4ed6\u65b9\u6cd5\u7684\u53c2\u6570\u3002\u8fd9\u6b63\u662f\u4e00\u4e9b\u7c7b\u4f3c<a class=\"external\" href=\"http:\/\/docs.guava-libraries.googlecode.com\/git\/javadoc\/com\/google\/common\/base\/Optional.html\" target=\"_blank\" rel=\"nofollow\">Guava<\/a>\u7684\u5916\u90e8API\u8bd5\u56fe\u89e3\u51b3\u7684\u95ee\u9898\u3002\u4e00\u4e9bJVM\u7f16\u7a0b\u8bed\u8a00\u6bd4\u5982Scala\u3001Ceylon\u7b49\u5df2\u7ecf\u5c06\u5bf9\u5728\u6838\u5fc3API\u4e2d\u89e3\u51b3\u4e86\u8fd9\u4e2a\u95ee\u9898\u3002\u5728\u6211\u7684<a class=\"external\" href=\"http:\/\/blog.sanaulla.info\/2013\/08\/24\/a-brieft-introduction-to-using-option-and-either-classes\/\" target=\"_blank\" rel=\"nofollow\">\u524d\u4e00\u7bc7\u6587\u7ae0<\/a>\u4e2d\uff0c\u4ecb\u7ecd\u4e86<a class=\"external\" href=\"http:\/\/blog.sanaulla.info\/category\/scala-4\/\" target=\"_blank\" rel=\"nofollow\">Scala<\/a>\u662f\u5982\u4f55\u89e3\u51b3\u4e86\u8fd9\u4e2a\u95ee\u9898\u3002<\/p>\n<p style=\"margin: 1em 0px;\">\u65b0\u7248\u672c\u7684Java\uff0c\u6bd4\u5982<a class=\"external\" href=\"http:\/\/blog.sanaulla.info\/tag\/java-8\/\" target=\"_blank\" rel=\"nofollow\">Java 8<\/a>\u5f15\u5165\u4e86\u4e00\u4e2a\u65b0\u7684<a class=\"external\" href=\"http:\/\/download.java.net\/jdk8\/docs\/api\/java\/util\/Optional.html\" target=\"_blank\" rel=\"nofollow\">Optional<\/a>\u7c7b\u3002Optional\u7c7b\u7684Javadoc\u63cf\u8ff0\u5982\u4e0b\uff1a<\/p>\n<blockquote style=\"display: block; font-size: 0.9em; border-left: 3px solid #4870ac; padding: 0.5em 1em; margin: 0px; background: #f6f8fa; color: #40464f;\"><p>\n\u8fd9\u662f\u4e00\u4e2a\u53ef\u4ee5\u4e3anull\u7684\u5bb9\u5668\u5bf9\u8c61\u3002\u5982\u679c\u503c\u5b58\u5728\u5219isPresent()\u65b9\u6cd5\u4f1a\u8fd4\u56detrue\uff0c\u8c03\u7528get()\u65b9\u6cd5\u4f1a\u8fd4\u56de\u8be5\u5bf9\u8c61\u3002\n<\/p><\/blockquote>\n<p style=\"margin: 1em 0px;\">\u672c\u6587\u4f1a\u9010\u4e2a\u63a2\u8ba8Optional\u7c7b\u5305\u542b\u7684\u65b9\u6cd5\uff0c\u5e76\u901a\u8fc7\u4e00\u4e24\u4e2a\u793a\u4f8b\u5c55\u793a\u5982\u4f55\u4f7f\u7528\u3002<\/p>\n<h3 style=\"padding: 0px; color: #4870ac; margin: 1.2em 0px 1em; font-size: 1.3em;\">of<\/h3>\n<blockquote style=\"display: block; font-size: 0.9em; border-left: 3px solid #4870ac; padding: 0.5em 1em; margin: 0px; background: #f6f8fa; color: #40464f;\"><p>\n\u4e3a\u975enull\u7684\u503c\u521b\u5efa\u4e00\u4e2aOptional\u3002\n<\/p><\/blockquote>\n<p style=\"margin: 1em 0px;\">of\u65b9\u6cd5\u901a\u8fc7\u5de5\u5382\u65b9\u6cd5\u521b\u5efaOptional\u7c7b\u3002\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0c\u521b\u5efa\u5bf9\u8c61\u65f6\u4f20\u5165\u7684\u53c2\u6570\u4e0d\u80fd\u4e3anull\u3002\u5982\u679c\u4f20\u5165\u53c2\u6570\u4e3anull\uff0c\u5219\u629b\u51faNullPointerException \u3002<\/p>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; overflow-x: auto; margin: 0.5em; padding: 3px 5px; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">\/\/\u8c03\u7528\u5de5\u5382\u65b9\u6cd5\u521b\u5efaOptional\u5b9e\u4f8b\nOptional&lt;String&gt; name = Optional.of(\"Sanaulla\");\n\/\/\u4f20\u5165\u53c2\u6570\u4e3anull\uff0c\u629b\u51faNullPointerException.\nOptional&lt;String&gt; someNull = Optional.of(null);<\/code><\/pre>\n<h3 style=\"padding: 0px; color: #4870ac; margin: 1.2em 0px 1em; font-size: 1.3em;\">ofNullable<\/h3>\n<blockquote style=\"display: block; font-size: 0.9em; border-left: 3px solid #4870ac; padding: 0.5em 1em; margin: 0px; background: #f6f8fa; color: #40464f;\"><p>\n\u4e3a\u6307\u5b9a\u7684\u503c\u521b\u5efa\u4e00\u4e2aOptional\uff0c\u5982\u679c\u6307\u5b9a\u7684\u503c\u4e3anull\uff0c\u5219\u8fd4\u56de\u4e00\u4e2a\u7a7a\u7684Optional\u3002\n<\/p><\/blockquote>\n<p style=\"margin: 1em 0px;\">ofNullable\u4e0eof\u65b9\u6cd5\u76f8\u4f3c\uff0c\u552f\u4e00\u7684\u533a\u522b\u662f\u53ef\u4ee5\u63a5\u53d7\u53c2\u6570\u4e3anull\u7684\u60c5\u51b5\u3002\u793a\u4f8b\u5982\u4e0b\uff1a<\/p>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; overflow-x: auto; margin: 0.5em; padding: 3px 5px; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">\/\/\u4e0b\u9762\u521b\u5efa\u4e86\u4e00\u4e2a\u4e0d\u5305\u542b\u4efb\u4f55\u503c\u7684Optional\u5b9e\u4f8b\n\/\/\u4f8b\u5982\uff0c\u503c\u4e3a'null'\nOptional empty = Optional.ofNullable(null);<\/code><\/pre>\n<h3 style=\"padding: 0px; color: #4870ac; margin: 1.2em 0px 1em; font-size: 1.3em;\">isPresent<\/h3>\n<p style=\"margin: 1em 0px;\">\u975e\u5e38\u5bb9\u6613\u7406\u89e3<\/p>\n<blockquote style=\"display: block; font-size: 0.9em; border-left: 3px solid #4870ac; padding: 0.5em 1em; margin: 0px; background: #f6f8fa; color: #40464f;\"><p>\n\u5982\u679c\u503c\u5b58\u5728\u8fd4\u56detrue\uff0c\u5426\u5219\u8fd4\u56defalse\u3002\n<\/p><\/blockquote>\n<p style=\"margin: 1em 0px;\">\u7c7b\u4f3c\u4e0b\u9762\u7684\u4ee3\u7801\uff1a<\/p>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; overflow-x: auto; margin: 0.5em; padding: 3px 5px; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">\/\/isPresent\u65b9\u6cd5\u7528\u6765\u68c0\u67e5Optional\u5b9e\u4f8b\u4e2d\u662f\u5426\u5305\u542b\u503c\nif (name.isPresent()) {\n\u00a0\u00a0\/\/\u5728Optional\u5b9e\u4f8b\u5185\u8c03\u7528get()\u8fd4\u56de\u5df2\u5b58\u5728\u7684\u503c\n\u00a0\u00a0System.out.println(name.get());\/\/\u8f93\u51faSanaulla\n}<\/code><\/pre>\n<h3 style=\"padding: 0px; color: #4870ac; margin: 1.2em 0px 1em; font-size: 1.3em;\">get<\/h3>\n<blockquote style=\"display: block; font-size: 0.9em; border-left: 3px solid #4870ac; padding: 0.5em 1em; margin: 0px; background: #f6f8fa; color: #40464f;\"><p>\n\u5982\u679cOptional\u6709\u503c\u5219\u5c06\u5176\u8fd4\u56de\uff0c\u5426\u5219\u629b\u51faNoSuchElementException\u3002\n<\/p><\/blockquote>\n<p style=\"margin: 1em 0px;\">\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0cget\u65b9\u6cd5\u7528\u6765\u5f97\u5230Optional\u5b9e\u4f8b\u4e2d\u7684\u503c\u3002\u4e0b\u9762\u6211\u4eec\u770b\u4e00\u4e2a\u629b\u51faNoSuchElementException\u7684\u4f8b\u5b50\uff1a<\/p>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; overflow-x: auto; margin: 0.5em; padding: 3px 5px; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">\/\/\u6267\u884c\u4e0b\u9762\u7684\u4ee3\u7801\u4f1a\u8f93\u51fa\uff1aNo value present\ntry {\n\u00a0\u00a0\/\/\u5728\u7a7a\u7684Optional\u5b9e\u4f8b\u4e0a\u8c03\u7528get()\uff0c\u629b\u51faNoSuchElementException\n\u00a0\u00a0System.out.println(empty.get());\n} catch (NoSuchElementException ex) {\n\u00a0\u00a0System.out.println(ex.getMessage());\n}<\/code><\/pre>\n<h3 style=\"padding: 0px; color: #4870ac; margin: 1.2em 0px 1em; font-size: 1.3em;\">ifPresent<\/h3>\n<blockquote style=\"display: block; font-size: 0.9em; border-left: 3px solid #4870ac; padding: 0.5em 1em; margin: 0px; background: #f6f8fa; color: #40464f;\"><p>\n\u5982\u679cOptional\u5b9e\u4f8b\u6709\u503c\u5219\u4e3a\u5176\u8c03\u7528consumer\uff0c\u5426\u5219\u4e0d\u505a\u5904\u7406\n<\/p><\/blockquote>\n<p style=\"margin: 1em 0px;\">\u8981\u7406\u89e3ifPresent\u65b9\u6cd5\uff0c\u9996\u5148\u9700\u8981\u4e86\u89e3<a class=\"external\" href=\"http:\/\/blog.sanaulla.info\/2013\/04\/01\/predicate-and-consumer-interface-in-java-util-function-package-in-java-8\/\" target=\"_blank\" rel=\"nofollow\">Consumer\u7c7b<\/a>\u3002\u7b80\u7b54\u5730\u8bf4\uff0cConsumer\u7c7b\u5305\u542b\u4e00\u4e2a\u62bd\u8c61\u65b9\u6cd5\u3002\u8be5\u62bd\u8c61\u65b9\u6cd5\u5bf9\u4f20\u5165\u7684\u503c\u8fdb\u884c\u5904\u7406\uff0c\u4f46\u6ca1\u6709\u8fd4\u56de\u503c\u3002<a class=\"external\" href=\"http:\/\/blog.sanaulla.info\/tag\/java-8\/\" target=\"_blank\" rel=\"nofollow\">Java8<\/a>\u652f\u6301\u4e0d\u7528\u63a5\u53e3\u76f4\u63a5\u901a\u8fc7<a class=\"external\" href=\"http:\/\/blog.sanaulla.info\/2013\/03\/11\/using-lambda-expression-to-sort-a-list-in-java-8-using-netbeans-lambda-support\/\" target=\"_blank\" rel=\"nofollow\">lambda\u8868\u8fbe\u5f0f<\/a>\u4f20\u5165\u53c2\u6570\u3002<\/p>\n<p style=\"margin: 1em 0px;\">\u5982\u679cOptional\u5b9e\u4f8b\u6709\u503c\uff0c\u8c03\u7528ifPresent()\u53ef\u4ee5\u63a5\u53d7\u63a5\u53e3\u6bb5\u6216lambda\u8868\u8fbe\u5f0f\u3002\u7c7b\u4f3c\u4e0b\u9762\u7684\u4ee3\u7801\uff1a<\/p>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; overflow-x: auto; margin: 0.5em; padding: 3px 5px; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">\/\/ifPresent\u65b9\u6cd5\u63a5\u53d7lambda\u8868\u8fbe\u5f0f\u4f5c\u4e3a\u53c2\u6570\u3002\n\/\/lambda\u8868\u8fbe\u5f0f\u5bf9Optional\u7684\u503c\u8c03\u7528consumer\u8fdb\u884c\u5904\u7406\u3002\nname.ifPresent((value) -&gt; {\n\u00a0\u00a0System.out.println(\"The length of the value is: \" + value.length());\n});<\/code><\/pre>\n<h3 style=\"padding: 0px; color: #4870ac; margin: 1.2em 0px 1em; font-size: 1.3em;\">orElse<\/h3>\n<blockquote style=\"display: block; font-size: 0.9em; border-left: 3px solid #4870ac; padding: 0.5em 1em; margin: 0px; background: #f6f8fa; color: #40464f;\"><p>\n\u5982\u679c\u6709\u503c\u5219\u5c06\u5176\u8fd4\u56de\uff0c\u5426\u5219\u8fd4\u56de\u6307\u5b9a\u7684\u5176\u5b83\u503c\u3002\n<\/p><\/blockquote>\n<p style=\"margin: 1em 0px;\">\u5982\u679cOptional\u5b9e\u4f8b\u6709\u503c\u5219\u5c06\u5176\u8fd4\u56de\uff0c\u5426\u5219\u8fd4\u56deorElse\u65b9\u6cd5\u4f20\u5165\u7684\u53c2\u6570\u3002\u793a\u4f8b\u5982\u4e0b\uff1a<\/p>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; overflow-x: auto; margin: 0.5em; padding: 3px 5px; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">\/\/\u5982\u679c\u503c\u4e0d\u4e3anull\uff0corElse\u65b9\u6cd5\u8fd4\u56deOptional\u5b9e\u4f8b\u7684\u503c\u3002\n\/\/\u5982\u679c\u4e3anull\uff0c\u8fd4\u56de\u4f20\u5165\u7684\u6d88\u606f\u3002\n\/\/\u8f93\u51fa\uff1aThere is no value present!\nSystem.out.println(empty.orElse(\"There is no value present!\"));\n\/\/\u8f93\u51fa\uff1aSanaulla\nSystem.out.println(name.orElse(\"There is some value!\"));<\/code><\/pre>\n<h3 style=\"padding: 0px; color: #4870ac; margin: 1.2em 0px 1em; font-size: 1.3em;\">orElseGet<\/h3>\n<p style=\"margin: 1em 0px;\">orElseGet\u4e0eorElse\u65b9\u6cd5\u7c7b\u4f3c\uff0c\u533a\u522b\u5728\u4e8e\u5f97\u5230\u7684\u9ed8\u8ba4\u503c\u3002orElse\u65b9\u6cd5\u5c06\u4f20\u5165\u7684\u5b57\u7b26\u4e32\u4f5c\u4e3a\u9ed8\u8ba4\u503c\uff0corElseGet\u65b9\u6cd5\u53ef\u4ee5\u63a5\u53d7<a class=\"external\" href=\"http:\/\/blog.sanaulla.info\/2013\/04\/02\/supplier-interface-in-java-util-function-package-in-java-8\/\" target=\"_blank\" rel=\"nofollow\">Supplier\u63a5\u53e3<\/a>\u7684\u5b9e\u73b0\u7528\u6765\u751f\u6210\u9ed8\u8ba4\u503c\u3002\u793a\u4f8b\u5982\u4e0b\uff1a<\/p>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; overflow-x: auto; margin: 0.5em; padding: 3px 5px; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">\/\/orElseGet\u4e0eorElse\u65b9\u6cd5\u7c7b\u4f3c\uff0c\u533a\u522b\u5728\u4e8eorElse\u4f20\u5165\u7684\u662f\u9ed8\u8ba4\u503c\uff0c\n\/\/orElseGet\u53ef\u4ee5\u63a5\u53d7\u4e00\u4e2alambda\u8868\u8fbe\u5f0f\u751f\u6210\u9ed8\u8ba4\u503c\u3002\n\/\/\u8f93\u51fa\uff1aDefault Value\nSystem.out.println(empty.orElseGet(() -&gt; \"Default Value\"));\n\/\/\u8f93\u51fa\uff1aSanaulla\nSystem.out.println(name.orElseGet(() -&gt; \"Default Value\"));<\/code><\/pre>\n<h3 style=\"padding: 0px; color: #4870ac; margin: 1.2em 0px 1em; font-size: 1.3em;\">orElseThrow<\/h3>\n<blockquote style=\"display: block; font-size: 0.9em; border-left: 3px solid #4870ac; padding: 0.5em 1em; margin: 0px; background: #f6f8fa; color: #40464f;\"><p>\n\u5982\u679c\u6709\u503c\u5219\u5c06\u5176\u8fd4\u56de\uff0c\u5426\u5219\u629b\u51fasupplier\u63a5\u53e3\u521b\u5efa\u7684\u5f02\u5e38\u3002\n<\/p><\/blockquote>\n<p style=\"margin: 1em 0px;\">\u5728orElseGet\u65b9\u6cd5\u4e2d\uff0c\u6211\u4eec\u4f20\u5165\u4e00\u4e2a<a class=\"external\" href=\"http:\/\/blog.sanaulla.info\/2013\/04\/02\/supplier-interface-in-java-util-function-package-in-java-8\/\" target=\"_blank\" rel=\"nofollow\">Supplier\u63a5\u53e3<\/a>\u3002\u7136\u800c\uff0c\u5728orElseThrow\u4e2d\u6211\u4eec\u53ef\u4ee5\u4f20\u5165\u4e00\u4e2alambda\u8868\u8fbe\u5f0f\u6216\u65b9\u6cd5\uff0c\u5982\u679c\u503c\u4e0d\u5b58\u5728\u6765\u629b\u51fa\u5f02\u5e38\u3002\u793a\u4f8b\u5982\u4e0b\uff1a<\/p>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; overflow-x: auto; margin: 0.5em; padding: 3px 5px; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">try {\n\u00a0\u00a0\/\/orElseThrow\u4e0eorElse\u65b9\u6cd5\u7c7b\u4f3c\u3002\u4e0e\u8fd4\u56de\u9ed8\u8ba4\u503c\u4e0d\u540c\uff0c\n\u00a0\u00a0\/\/orElseThrow\u4f1a\u629b\u51falambda\u8868\u8fbe\u5f0f\u6216\u65b9\u6cd5\u751f\u6210\u7684\u5f02\u5e38\n\n\u00a0\u00a0empty.orElseThrow(ValueAbsentException::new);\n} catch (Throwable ex) {\n\u00a0\u00a0\/\/\u8f93\u51fa: No value present in the Optional instance\n\u00a0\u00a0System.out.println(ex.getMessage());\n}<\/code><\/pre>\n<p style=\"margin: 1em 0px;\">ValueAbsentException\u5b9a\u4e49\u5982\u4e0b\uff1a<\/p>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; overflow-x: auto; margin: 0.5em; padding: 3px 5px; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">class ValueAbsentException extends Throwable {\n\n\u00a0\u00a0public ValueAbsentException() {\n\u00a0\u00a0\u00a0\u00a0super();\n\u00a0\u00a0}\n\n\u00a0\u00a0public ValueAbsentException(String msg) {\n\u00a0\u00a0\u00a0\u00a0super(msg);\n\u00a0\u00a0}\n\n\u00a0\u00a0@Override\n\u00a0\u00a0public String getMessage() {\n\u00a0\u00a0\u00a0\u00a0return \"No value present in the Optional instance\";\n\u00a0\u00a0}\n}<\/code><\/pre>\n<h3 style=\"padding: 0px; color: #4870ac; margin: 1.2em 0px 1em; font-size: 1.3em;\">map<\/h3>\n<p style=\"margin: 1em 0px;\">map\u65b9\u6cd5\u6587\u6863\u8bf4\u660e\u5982\u4e0b\uff1a<\/p>\n<blockquote style=\"display: block; font-size: 0.9em; border-left: 3px solid #4870ac; padding: 0.5em 1em; margin: 0px; background: #f6f8fa; color: #40464f;\"><p>\n\u5982\u679c\u6709\u503c\uff0c\u5219\u5bf9\u5176\u6267\u884c\u8c03\u7528mapping\u51fd\u6570\u5f97\u5230\u8fd4\u56de\u503c\u3002\u5982\u679c\u8fd4\u56de\u503c\u4e0d\u4e3anull\uff0c\u5219\u521b\u5efa\u5305\u542bmapping\u8fd4\u56de\u503c\u7684Optional\u4f5c\u4e3amap\u65b9\u6cd5\u8fd4\u56de\u503c\uff0c\u5426\u5219\u8fd4\u56de\u7a7aOptional\u3002\n<\/p><\/blockquote>\n<p style=\"margin: 1em 0px;\">map\u65b9\u6cd5\u7528\u6765\u5bf9Optional\u5b9e\u4f8b\u7684\u503c\u6267\u884c\u4e00\u7cfb\u5217\u64cd\u4f5c\u3002\u901a\u8fc7\u4e00\u7ec4\u5b9e\u73b0\u4e86Function\u63a5\u53e3\u7684lambda\u8868\u8fbe\u5f0f\u4f20\u5165\u64cd\u4f5c\u3002\u5982\u679c\u4f60\u4e0d\u719f\u6089Function\u63a5\u53e3\uff0c\u53ef\u4ee5\u53c2\u8003\u6211\u7684<a class=\"external\" href=\"http:\/\/blog.sanaulla.info\/2013\/03\/27\/function-interface-a-functional-interface-in-the-java-util-function-package-in-java-8\/\" target=\"_blank\" rel=\"nofollow\">\u8fd9\u7bc7\u535a\u5ba2<\/a>\u3002map\u65b9\u6cd5\u793a\u4f8b\u5982\u4e0b\uff1a<\/p>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; overflow-x: auto; margin: 0.5em; padding: 3px 5px; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">\/\/map\u65b9\u6cd5\u6267\u884c\u4f20\u5165\u7684lambda\u8868\u8fbe\u5f0f\u53c2\u6570\u5bf9Optional\u5b9e\u4f8b\u7684\u503c\u8fdb\u884c\u4fee\u6539\u3002\n\/\/\u4e3alambda\u8868\u8fbe\u5f0f\u7684\u8fd4\u56de\u503c\u521b\u5efa\u65b0\u7684Optional\u5b9e\u4f8b\u4f5c\u4e3amap\u65b9\u6cd5\u7684\u8fd4\u56de\u503c\u3002\nOptional&lt;String&gt; upperName = name.map((value) -&gt; value.toUpperCase());\nSystem.out.println(upperName.orElse(\"No value found\"));<\/code><\/pre>\n<h3 style=\"padding: 0px; color: #4870ac; margin: 1.2em 0px 1em; font-size: 1.3em;\">flatMap<\/h3>\n<blockquote style=\"display: block; font-size: 0.9em; border-left: 3px solid #4870ac; padding: 0.5em 1em; margin: 0px; background: #f6f8fa; color: #40464f;\"><p>\n\u5982\u679c\u6709\u503c\uff0c\u4e3a\u5176\u6267\u884cmapping\u51fd\u6570\u8fd4\u56deOptional\u7c7b\u578b\u8fd4\u56de\u503c\uff0c\u5426\u5219\u8fd4\u56de\u7a7aOptional\u3002flatMap\u4e0emap\uff08Funtion\uff09\u65b9\u6cd5\u7c7b\u4f3c\uff0c\u533a\u522b\u5728\u4e8eflatMap\u4e2d\u7684mapper\u8fd4\u56de\u503c\u5fc5\u987b\u662fOptional\u3002\u8c03\u7528\u7ed3\u675f\u65f6\uff0cflatMap\u4e0d\u4f1a\u5bf9\u7ed3\u679c\u7528Optional\u5c01\u88c5\u3002\n<\/p><\/blockquote>\n<p style=\"margin: 1em 0px;\">flatMap\u65b9\u6cd5\u4e0emap\u65b9\u6cd5\u7c7b\u4f3c\uff0c\u533a\u522b\u5728\u4e8emapping\u51fd\u6570\u7684\u8fd4\u56de\u503c\u4e0d\u540c\u3002map\u65b9\u6cd5\u7684mapping\u51fd\u6570\u8fd4\u56de\u503c\u53ef\u4ee5\u662f\u4efb\u4f55\u7c7b\u578bT\uff0c\u800cflatMap\u65b9\u6cd5\u7684mapping\u51fd\u6570\u5fc5\u987b\u662fOptional\u3002<\/p>\n<p style=\"margin: 1em 0px;\">\u53c2\u7167map\u51fd\u6570\uff0c\u4f7f\u7528flatMap\u91cd\u5199\u7684\u793a\u4f8b\u5982\u4e0b\uff1a<\/p>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; overflow-x: auto; margin: 0.5em; padding: 3px 5px; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">\/\/flatMap\u4e0emap\uff08Function\uff09\u975e\u5e38\u7c7b\u4f3c\uff0c\u533a\u522b\u5728\u4e8e\u4f20\u5165\u65b9\u6cd5\u7684lambda\u8868\u8fbe\u5f0f\u7684\u8fd4\u56de\u7c7b\u578b\u3002\n\/\/map\u65b9\u6cd5\u4e2d\u7684lambda\u8868\u8fbe\u5f0f\u8fd4\u56de\u503c\u53ef\u4ee5\u662f\u4efb\u610f\u7c7b\u578b\uff0c\u5728map\u51fd\u6570\u8fd4\u56de\u4e4b\u524d\u4f1a\u5305\u88c5\u4e3aOptional\u3002\n\/\/\u4f46flatMap\u65b9\u6cd5\u4e2d\u7684lambda\u8868\u8fbe\u5f0f\u8fd4\u56de\u503c\u5fc5\u987b\u662fOptionl\u5b9e\u4f8b\u3002\nupperName = name.flatMap((value) -&gt; Optional.of(value.toUpperCase()));\nSystem.out.println(upperName.orElse(\"No value found\"));\/\/\u8f93\u51faSANAULLA<\/code><\/pre>\n<h3 style=\"padding: 0px; color: #4870ac; margin: 1.2em 0px 1em; font-size: 1.3em;\">filter<\/h3>\n<p style=\"margin: 1em 0px;\">filter\u4e2a\u65b9\u6cd5\u901a\u8fc7\u4f20\u5165\u9650\u5b9a\u6761\u4ef6\u5bf9Optional\u5b9e\u4f8b\u7684\u503c\u8fdb\u884c\u8fc7\u6ee4\u3002\u6587\u6863\u63cf\u8ff0\u5982\u4e0b\uff1a<\/p>\n<blockquote style=\"display: block; font-size: 0.9em; border-left: 3px solid #4870ac; padding: 0.5em 1em; margin: 0px; background: #f6f8fa; color: #40464f;\"><p>\n\u5982\u679c\u6709\u503c\u5e76\u4e14\u6ee1\u8db3\u65ad\u8a00\u6761\u4ef6\u8fd4\u56de\u5305\u542b\u8be5\u503c\u7684Optional\uff0c\u5426\u5219\u8fd4\u56de\u7a7aOptional\u3002\n<\/p><\/blockquote>\n<p style=\"margin: 1em 0px;\">\u8bfb\u5230\u8fd9\u91cc\uff0c\u53ef\u80fd\u4f60\u5df2\u7ecf\u77e5\u9053\u5982\u4f55\u4e3afilter\u65b9\u6cd5\u4f20\u5165\u4e00\u6bb5\u4ee3\u7801\u3002\u662f\u7684\uff0c\u8fd9\u91cc\u53ef\u4ee5\u4f20\u5165\u4e00\u4e2alambda\u8868\u8fbe\u5f0f\u3002\u5bf9\u4e8efilter\u51fd\u6570\u6211\u4eec\u5e94\u8be5\u4f20\u5165\u5b9e\u73b0\u4e86Predicate\u63a5\u53e3\u7684lambda\u8868\u8fbe\u5f0f\u3002\u5982\u679c\u4f60\u4e0d\u719f\u6089Predicate\u63a5\u53e3\uff0c\u53ef\u4ee5\u53c2\u8003<a class=\"external\" href=\"http:\/\/blog.sanaulla.info\/2013\/04\/01\/predicate-and-consumer-interface-in-java-util-function-package-in-java-8\/\" target=\"_blank\" rel=\"nofollow\">\u8fd9\u7bc7\u6587\u7ae0<\/a>\u3002<\/p>\n<p style=\"margin: 1em 0px;\">\u73b0\u5728\u6211\u6765\u770b\u770bfilter\u7684\u5404\u79cd\u7528\u6cd5\uff0c\u4e0b\u9762\u7684\u793a\u4f8b\u4ecb\u7ecd\u4e86\u6ee1\u8db3\u9650\u5b9a\u6761\u4ef6\u548c\u4e0d\u6ee1\u8db3\u4e24\u79cd\u60c5\u51b5\uff1a<\/p>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; overflow-x: auto; margin: 0.5em; padding: 3px 5px; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">\/\/filter\u65b9\u6cd5\u68c0\u67e5\u7ed9\u5b9a\u7684Option\u503c\u662f\u5426\u6ee1\u8db3\u67d0\u4e9b\u6761\u4ef6\u3002\n\/\/\u5982\u679c\u6ee1\u8db3\u5219\u8fd4\u56de\u540c\u4e00\u4e2aOption\u5b9e\u4f8b\uff0c\u5426\u5219\u8fd4\u56de\u7a7aOptional\u3002\nOptional&lt;String&gt; longName = name.filter((value) -&gt; value.length() &gt; 6);\nSystem.out.println(longName.orElse(\"The name is less than 6 characters\"));\/\/\u8f93\u51faSanaulla\n\n\/\/\u53e6\u4e00\u4e2a\u4f8b\u5b50\u662fOptional\u503c\u4e0d\u6ee1\u8db3filter\u6307\u5b9a\u7684\u6761\u4ef6\u3002\nOptional&lt;String&gt; anotherName = Optional.of(\"Sana\");\nOptional&lt;String&gt; shortName = anotherName.filter((value) -&gt; value.length() &gt; 6);\n\/\/\u8f93\u51fa\uff1aname\u957f\u5ea6\u4e0d\u8db36\u5b57\u7b26\nSystem.out.println(shortName.orElse(\"The name is less than 6 characters\"));<\/code><\/pre>\n<p style=\"margin: 1em 0px;\">\u4ee5\u4e0a\uff0c\u6211\u4eec\u4ecb\u7ecd\u4e86Optional\u7c7b\u7684\u5404\u4e2a\u65b9\u6cd5\u3002\u4e0b\u9762\u901a\u8fc7\u4e00\u4e2a\u5b8c\u6574\u7684\u793a\u4f8b\u5bf9\u7528\u6cd5\u96c6\u4e2d\u5c55\u793a\uff1a<\/p>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; overflow-x: auto; margin: 0.5em; padding: 3px 5px; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">public class OptionalDemo {\n\n\u00a0\u00a0public static void main(String[] args) {\n\u00a0\u00a0\u00a0\u00a0\/\/\u521b\u5efaOptional\u5b9e\u4f8b\uff0c\u4e5f\u53ef\u4ee5\u901a\u8fc7\u65b9\u6cd5\u8fd4\u56de\u503c\u5f97\u5230\u3002\n\u00a0\u00a0\u00a0\u00a0Optional&lt;String&gt; name = Optional.of(\"Sanaulla\");\n\n\u00a0\u00a0\u00a0\u00a0\/\/\u521b\u5efa\u6ca1\u6709\u503c\u7684Optional\u5b9e\u4f8b\uff0c\u4f8b\u5982\u503c\u4e3a'null'\n\u00a0\u00a0\u00a0\u00a0Optional empty = Optional.ofNullable(null);\n\n\u00a0\u00a0\u00a0\u00a0\/\/isPresent\u65b9\u6cd5\u7528\u6765\u68c0\u67e5Optional\u5b9e\u4f8b\u662f\u5426\u6709\u503c\u3002\n\u00a0\u00a0\u00a0\u00a0if (name.isPresent()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u8c03\u7528get()\u8fd4\u56deOptional\u503c\u3002\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(name.get());\n\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u5728Optional\u5b9e\u4f8b\u4e0a\u8c03\u7528get()\u629b\u51faNoSuchElementException\u3002\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(empty.get());\n\u00a0\u00a0\u00a0\u00a0} catch (NoSuchElementException ex) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(ex.getMessage());\n\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0\/\/ifPresent\u65b9\u6cd5\u63a5\u53d7lambda\u8868\u8fbe\u5f0f\u53c2\u6570\u3002\n\u00a0\u00a0\u00a0\u00a0\/\/\u5982\u679cOptional\u503c\u4e0d\u4e3a\u7a7a\uff0clambda\u8868\u8fbe\u5f0f\u4f1a\u5904\u7406\u5e76\u5728\u5176\u4e0a\u6267\u884c\u64cd\u4f5c\u3002\n\u00a0\u00a0\u00a0\u00a0name.ifPresent((value) -&gt; {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(\"The length of the value is: \" + value.length());\n\u00a0\u00a0\u00a0\u00a0});\n\n\u00a0\u00a0\u00a0\u00a0\/\/\u5982\u679c\u6709\u503corElse\u65b9\u6cd5\u4f1a\u8fd4\u56deOptional\u5b9e\u4f8b\uff0c\u5426\u5219\u8fd4\u56de\u4f20\u5165\u7684\u9519\u8bef\u4fe1\u606f\u3002\n\u00a0\u00a0\u00a0\u00a0System.out.println(empty.orElse(\"There is no value present!\"));\n\u00a0\u00a0\u00a0\u00a0System.out.println(name.orElse(\"There is some value!\"));\n\n\u00a0\u00a0\u00a0\u00a0\/\/orElseGet\u4e0eorElse\u7c7b\u4f3c\uff0c\u533a\u522b\u5728\u4e8e\u4f20\u5165\u7684\u9ed8\u8ba4\u503c\u3002\n\u00a0\u00a0\u00a0\u00a0\/\/orElseGet\u63a5\u53d7lambda\u8868\u8fbe\u5f0f\u751f\u6210\u9ed8\u8ba4\u503c\u3002\n\u00a0\u00a0\u00a0\u00a0System.out.println(empty.orElseGet(() -&gt; \"Default Value\"));\n\u00a0\u00a0\u00a0\u00a0System.out.println(name.orElseGet(() -&gt; \"Default Value\"));\n\n\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/orElseThrow\u4e0eorElse\u65b9\u6cd5\u7c7b\u4f3c\uff0c\u533a\u522b\u5728\u4e8e\u8fd4\u56de\u503c\u3002\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/orElseThrow\u629b\u51fa\u7531\u4f20\u5165\u7684lambda\u8868\u8fbe\u5f0f\/\u65b9\u6cd5\u751f\u6210\u5f02\u5e38\u3002\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0empty.orElseThrow(ValueAbsentException::new);\n\u00a0\u00a0\u00a0\u00a0} catch (Throwable ex) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(ex.getMessage());\n\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0\/\/map\u65b9\u6cd5\u901a\u8fc7\u4f20\u5165\u7684lambda\u8868\u8fbe\u5f0f\u4fee\u6539Optonal\u5b9e\u4f8b\u9ed8\u8ba4\u503c\u3002\n\u00a0\u00a0\u00a0\u00a0\/\/lambda\u8868\u8fbe\u5f0f\u8fd4\u56de\u503c\u4f1a\u5305\u88c5\u4e3aOptional\u5b9e\u4f8b\u3002\n\u00a0\u00a0\u00a0\u00a0Optional&lt;String&gt; upperName = name.map((value) -&gt; value.toUpperCase());\n\u00a0\u00a0\u00a0\u00a0System.out.println(upperName.orElse(\"No value found\"));\n\n\u00a0\u00a0\u00a0\u00a0\/\/flatMap\u4e0emap\uff08Funtion\uff09\u975e\u5e38\u76f8\u4f3c\uff0c\u533a\u522b\u5728\u4e8elambda\u8868\u8fbe\u5f0f\u7684\u8fd4\u56de\u503c\u3002\n\u00a0\u00a0\u00a0\u00a0\/\/map\u65b9\u6cd5\u7684lambda\u8868\u8fbe\u5f0f\u8fd4\u56de\u503c\u53ef\u4ee5\u662f\u4efb\u4f55\u7c7b\u578b\uff0c\u4f46\u662f\u8fd4\u56de\u503c\u4f1a\u5305\u88c5\u6210Optional\u5b9e\u4f8b\u3002\n\u00a0\u00a0\u00a0\u00a0\/\/\u4f46\u662fflatMap\u65b9\u6cd5\u7684lambda\u8fd4\u56de\u503c\u603b\u662fOptional\u7c7b\u578b\u3002\n\u00a0\u00a0\u00a0\u00a0upperName = name.flatMap((value) -&gt; Optional.of(value.toUpperCase()));\n\u00a0\u00a0\u00a0\u00a0System.out.println(upperName.orElse(\"No value found\"));\n\n\u00a0\u00a0\u00a0\u00a0\/\/filter\u65b9\u6cd5\u68c0\u67e5Optiona\u503c\u662f\u5426\u6ee1\u8db3\u7ed9\u5b9a\u6761\u4ef6\u3002\n\u00a0\u00a0\u00a0\u00a0\/\/\u5982\u679c\u6ee1\u8db3\u8fd4\u56deOptional\u5b9e\u4f8b\u503c\uff0c\u5426\u5219\u8fd4\u56de\u7a7aOptional\u3002\n\u00a0\u00a0\u00a0\u00a0Optional&lt;String&gt; longName = name.filter((value) -&gt; value.length() &gt; 6);\n\u00a0\u00a0\u00a0\u00a0System.out.println(longName.orElse(\"The name is less than 6 characters\"));\n\n\u00a0\u00a0\u00a0\u00a0\/\/\u53e6\u4e00\u4e2a\u793a\u4f8b\uff0cOptional\u503c\u4e0d\u6ee1\u8db3\u7ed9\u5b9a\u6761\u4ef6\u3002\n\u00a0\u00a0\u00a0\u00a0Optional&lt;String&gt; anotherName = Optional.of(\"Sana\");\n\u00a0\u00a0\u00a0\u00a0Optional&lt;String&gt; shortName = anotherName.filter((value) -&gt; value.length() &gt; 6);\n\u00a0\u00a0\u00a0\u00a0System.out.println(shortName.orElse(\"The name is less than 6 characters\"));\n\n\u00a0\u00a0}\n\n}<\/code><\/pre>\n<p class=\"brush: java; gutter: true\">\u4e0a\u8ff0\u4ee3\u7801\u8f93\u51fa\u5982\u4e0b\uff1a<\/p>\n<pre style=\"overflow: auto hidden; word-break: normal; white-space: pre; tab-size: 2; border-radius: 5px; line-height: 2; margin: 1em 0.5em; padding: 0.5em; box-shadow: rgba(0, 0, 0, 0.55) 0px 1px 5px; font-size: 12px; background: #002b36; max-width: 100%; overflow-wrap: normal;\"><code class=\"hljs\" style=\"word-break: normal; white-space: nowrap; tab-size: 2; font-size: 12px; font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Roboto Mono', 'Courier New', 'Microsoft YaHei', monospace; display: block; overflow-x: auto; margin: 0.5em; padding: 3px 5px; color: #93a1a1; background: #002b36; overflow-wrap: normal;\">Sanaulla\nNo value present\nThe length of the value is: 8\nThere is no value present!\nSanaulla\nDefault Value\nSanaulla\nNo value present in the Optional instance\nSANAULLA\nSANAULLA\nSanaulla\nThe name is less than 6 characters<\/code><\/pre>\n<p style=\"margin: 1em 0px;\">\u539f\u6587\u94fe\u63a5\uff1a\u00a0<a class=\"external\" href=\"http:\/\/www.javacodegeeks.com\/2013\/09\/deep-dive-into-optional-class-api-in-java-8.html\" target=\"_blank\" rel=\"nofollow\">javacodegeeks<\/a>\u00a0\u7ffb\u8bd1\uff1a\u00a0<a href=\"http:\/\/www.importnew.com\/\">ImportNew.com\u00a0<\/a>&#8211;\u00a0<a href=\"http:\/\/www.importnew.com\/author\/gaojunyang\">\u9ad8\u4fca\u9633<\/a> \u8bd1\u6587\u94fe\u63a5\uff1a\u00a0<a href=\"http:\/\/www.importnew.com\/6675.html\">http:\/\/www.importnew.com\/6675.html<\/a><\/p>\n<blockquote style=\"display: block; font-size: 0.9em; border-left: 3px solid #4870ac; padding: 0.5em 1em; margin: 0px; background: #f6f8fa; color: #40464f;\">\n<p style=\"margin: 1em 0px;\"><strong style=\"color: #4870ac;\">\u4e00\u53e5\u8bdd\u603b\u7ed3\uff1aOptional \u628a\u53ef\u80fd\u7f3a\u5e2d\u7684\u503c\u5305\u8d77\u6765\uff1a\u7528 ofNullable \u521b\u5efa\uff0c\u7528 orElse\/orElseGet\/orElseThrow \u7ed9\u7f3a\u7701\uff0c\u7528 map\/flatMap\/filter \u7ee7\u7eed\u7ec4\u5408\uff0c\u5c3d\u91cf\u5c11\u76f4\u63a5 get\u3002<\/strong><\/p>\n<\/blockquote>\n<\/section>\n","protected":false},"excerpt":{"rendered":"<p>\u8c03\u7528\u65b9\u6cd5\u62ff\u5230\u8fd4\u56de\u503c\u5374\u4e0d\u80fd\u76f4\u63a5\u5f80\u4e0b\u4f20\uff0c\u5f80\u5f80\u8981\u5148\u5224\u65ad\u662f\u4e0d\u662f null\u3002Guava \u548c Scala \u7684 Option [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[103],"tags":[97],"_links":{"self":[{"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/posts\/2225"}],"collection":[{"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2225"}],"version-history":[{"count":3,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/posts\/2225\/revisions"}],"predecessor-version":[{"id":2230,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/posts\/2225\/revisions\/2230"}],"wp:attachment":[{"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2225"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2225"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}