开发者社区> 问答> 正文

什么是可选的?为什么以及如何使用它?

Java 8 引入了名为"可选"的新类。引入此类基本上是为了避免 java 中的 NullPointerexception。可以解释一下吗?

展开
收起
YDYK 2020-04-24 21:55:17 535 0
1 条回答
写回答
取消 提交回答
  • 可选类封装存在或不存在的可选值。 它是对象周围的包装,可用于避免 NullPointerException。 让我们举一个简单的例子

    public static Character getNonRepeatedCharacter(String str) { Map<Character, Integer> countCharacters = new LinkedHashMap<Character, Integer>(); for (int i = 0; i < str.length() - 1; i++) { Character c = str.charAt(i); if (!countCharacters.containsKey(c)) { countCharacters.put(c, 1); } else { countCharacters.put(c, countCharacters.get(c) + 1); } } // As LinkedHashMap maintains insertion order, first character with // count 1 should return first non repeated character for (Entry<Character, Integer> e : countCharacters.entrySet()) { if (e.getValue() == 1) return e.getKey();

    	  }
    	  return null;
    	 
    	 }
    

    您调用上述方法如下。

    Character c=getNonRepeatedCharacter("SASAS");
    System.out.println("Non repeated character is :"+c.toString());
    

    你看到问题,没有非重复字符getNon重复字符("SASAS"),因此它将返回null,我们调用c.toString,所以它显然将抛出NullPointerexception。 您可以使用"可选"来避免此空指针异常。 让我们更改方法以返回可选对象而不是字符串。

    2020-04-24 21:56:04
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
JCLI使用说明文档 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载