草庐IT

Optional类

全部标签

Python - typing 模块 —— Optional

前言typing是在python3.5才有的模块前置学习Python类型提示:https://www.cnblogs.com/poloyy/p/15145380.html常用类型提示https://www.cnblogs.com/poloyy/p/15150315.html类型别名https://www.cnblogs.com/poloyy/p/15153883.html NewTypehttps://www.cnblogs.com/poloyy/p/15153886.htmlCallablehttps://www.cnblogs.com/poloyy/p/15154008.htmlTypeV

java - 有没有一种优雅的方法可以将 Map<P, Optional<Q>> 转换为稀疏 Map<P, Q>?

有没有一种优雅的方法来转换Map>到稀疏Map?这应该可行,但有点笨拙:Map>map=...;Mapmap2=map.entrySet().stream().filter(e->e.getValue().isPresent()).collect(Collectors.toMap(e->e.getKey(),e->e.getValue().get())); 最佳答案 我想说你的方式几乎已经是最优雅的方式了,我只会做一些轻微的外观改动,并用Entry替换你的收集器中的e->e.getKey()::getKey。这只是一个很小的变化,但

java - Stream.findFirst 与 Optional.of 不同?

假设我有两个类和两个方法:classScratch{privateclassA{}privateclassBextendsA{}publicOptionalgetItems(Listitems){returnitems.stream().map(s->newB()).findFirst();}publicOptionalgetItems2(Listitems){returnOptional.of(items.stream().map(s->newB()).findFirst().get());}}为什么getItems2编译而getItems给出编译器错误incompatibletyp

java - 返回 Optional<T> 的方法的 Mockito 错误

我有如下方法的接口(interface)publicinterfaceIRemoteStore{Optionalget(StringcacheName,Stringkey,String...rest);}实现该接口(interface)的类的实例称为remoteStore。当我用mockito模拟这个并使用该方法时:Mockito.when(remoteStore.get("a","b")).thenReturn("lol");我得到错误:CannotresolvedthemethodthenReturn(java.lang.String)我认为这与get返回Optional类的实例有

Java Optional if object is not null - 返回方法结果,如果为 null - 返回默认值

是否可以将此代码转换为Java8Optional单行表达式?longlastPollTime;if(object!=null){lastPollTime=object.getTime();}else{lastPollTime=0;}即如果某个对象不为空,我需要调用一个对象方法并返回其结果,否则返回0。Optional.ofNullable().orElse()不适合,因为它返回相同类型的对象,但我需要方法调用的结果或一些默认值。 最佳答案 几种形式:longlastPollTime=Optional.ofNullable(objec

java - 为什么 Optional 的 or 和 flatMap 方法的供应商类型参数是通配符?

Optional.or方法是在Java9中添加的。这是方法签名publicOptionalor​(Supplier>supplier)为什么Supplier的类型参数是服用?extendsOptional而不仅仅是Optional,自Optional是final类吗?Optional.flatMap也是如此。方法。这是对Java8的更改。在Java8中,它是Function>mapper而它已更改为Function>在Java9中。 最佳答案 我从StuartMarks本人那里找到了背后的原因http://mail.openjdk.

java - 为什么 java 中没有 Optional 的公共(public)构造函数?

为什么Optional有of()和ofNullable()之类的方法,而不是公共(public)构造函数? 最佳答案 来自JoshuaBloch有效的Java,第2章。创建和销毁元素,1件:Considerstaticfactorymethodsinsteadofconstructors为什么?Oneadvantageofstaticfactorymethodsisthat,unlikeconstructors,theyhavenames.使用静态工厂方法,我们可以在方法定义中指定一些实例化行为。这使得API更易于使用,并且我们可以

java - 为什么 Optional.map 使这项任务有效?

Optional>option=Optional.of(newArrayList());Optional>doesntWork=option;Optional>works=option.map(list->list);第一次尝试的赋值没有编译,但第二个赋值为map做。感觉就像map实际上不应该完成任何事情,但由于某种原因它变成了我的Optional>进入Optional>.是否存在某种隐式转换? 最佳答案 如果您查看map的代码并跟踪所有方法调用,您会看到option.map(list->list)最终返回newOptional(o

java - OptionalInt 与 Optional<Integer>

在浏览java.util的文档时包,我惊讶地发现Optional和OptionalInt彼此没有任何关系。这似乎很难相信,因为这表明它们是不相关的类。为什么它们没有一个通用的接口(interface)、类、子类型或一些东西来揭示它们之间的关系?(当您查看它们的用途时,它们是非常相似的类。)另外,为什么需要额外的OptionalInt类(class)?为什么你不能直接使用Optional?我以为是因为int是原始的,但没有OptionalChar所以这将是一个不一致的设计选择。 最佳答案 Java8引入了很多专用于原语的内容。原因很可

java - 如果存在 Optional<> 则抛出异常

假设我想查看一个对象是否存在于流中,如果不存在,则抛出异常。我可以做到这一点的一种方法是使用orElseThrow方法:Listvalues=newArrayList();values.add("one");//values.add("two");//exceptionthrownvalues.add("three");Stringtwo=values.stream().filter(s->s.equals("two")).findAny().orElseThrow(()->newRuntimeException("notfound"));反过来呢?如果我想在找到任何匹配项时抛出异常: