草庐IT

Optional

全部标签

java - 使用 Optional.orElseThrow 在 Stream 中抛出 RuntimeException

下面的代码工作正常:Stream.of("key1","key2").map(key->{SomeObjectfoo=service.find(key);if(foo==null){thrownewRuntimeException("Noentityfoundwithkey:"+key);}returnfoo;})//...但是,当我使用Optional中的orElseThrow时:Stream.of("key1","key2").map(key->Optional.ofNullable(someService.find(key)).orElseThrow(()->newRuntime

java - JPA/Hibernate : @ManyToOne and @OneToOne relationships tagged as FetchType. LAZY 和 optional = false 不在 em.find() 上延迟加载?

我有以下实体(仅显示相关映射):@Entity@Table(name="PQs")publicclassPQimplementsSerializable{@Id@GeneratedValue(strategy=GenerationType.IDENTITY)@ColumnprivateIntegerid;@ColumnprivateStringname;@ManyToOne(fetch=FetchType.LAZY)//lazyXToOne@JoinColumn(name="user_id",referencedColumnName="person_id")privateUseruse

java.util.Objects 与 Optional 哪个更可取?

java.util.Objects类扩展了许多新方法Objects#requireNonNullElse分别Objects#requireNonNullElseGet()在Java-9.如果第一个参数为非空,则两者都将返回第一个参数,否则返回非空的第二个参数或supply.get()的非空值jshell>StringnullStr=null;nullStr==>nulljshell>Objects.requireNonNullElse(nullStr,"loremipsum");$13==>"loremipsum"jshell>Objects.requireNonNullElseGet

java - 简洁地将 Optional.absent() 值传递给方法

使用Guava的Optional类型作为方法参数的一个问题是你不能简单地写//methoddeclarationpublicvoidfoo(Optionalarg);//compilererrorfoo(Optional.absent());由于类型推断失败但必须显式添加类型://realmethodcallfoo(Optional.absent());如何避免? 最佳答案 如果您正在处理一小组Optional类型(例如,主要是字符串或少数其他类型),只需创建一些辅助方法来为您绑定(bind)类型参数:publicfinalclas

java - 为什么 Java 8 Optional 实现为 final,没有 Some 和 None 层次结构?

在Java中,Optional实现为publicfinalclassOptional{...}而不是作为Some的密封层次结构和None.为什么这里不是这种情况?这是缺少sealed的解决方法吗?在java?是否有更深层次的原因?如果你看一下方法实现,你会发现通过这种方式,它具有丑陋的空检查功能:publicOptionalmap(Functionmapper){Objects.requireNonNull(mapper);if(!isPresent())returnempty();else{returnOptional.ofNullable(mapper.apply(value));

java - Java Optional 的性能

我刚刚偶然发现了Java8中的Optional类——我真的很喜欢用isPresent()方法调用替换我的代码中的一些空检查(字面意思是“值是否存在?”)的方法。我的问题是:这不会导致我的代码性能下降吗?我只是猜测简单的null检查可能会更便宜一些,而且我在字节码阅读/解释方面还不是很好,所以我真的很想知道你对这个话题的想法。 最佳答案 我使用一种算法进行了一些性能测试,该算法大量使用空值检查以及对可能可为空的字段的访问。我实现了一个简单的算法,从单链表中删除中间元素。首先我实现了两类链表节点:safe-有Optional和unsaf

java - optional 为空时如何返回?

我喜欢那个optionals现在在Java标准库中。但是我一直遇到一个基本问题,我还没有想出如何以最好的方式解决(最容易阅读和理解,最漂亮,最短):当可选为空时如何从方法返回?我正在寻找一种适用于可选数量和代码块大小的不同组合的通用解决方案。在下面的示例中,我将尝试展示我的意思:voidm1(){//WhenIgetanoptional:Optionalo=getOptional();//Andwanttoreturnifit'semptyif(!o.isPresent())return;//InthewholerestofthemethodIhavetocallOptional.ge

python - 参数解析器 : Optional argument with optional value

如果我有一个带有可选参数值的可选参数,有没有办法在未给出值时验证是否设置了参数?例如:parser=argparse.ArgumentParser()parser.add_argument('--abc',nargs='?')args=parser.parse_args()会正确地给我:optionalarguments:--abc[ABC]如何区分下面的1和2?''=>args.abc为无'--abc'=>args.abc仍然是None'--abcsomething'=>args.abc是something...更新:找到解决这个问题的技巧:可以使用“nargs='*'”代替“nar

python - Pycharm 预期类型 'optional[bytes]' 得到了 'str' 而不是

我正在使用rsplit来拆分路径名,rootPath=os.path.abspath(__file__)rootPath=(rootPath.rsplit('/',1)[0]).rsplit('/',1)[0]但是Pycharm警告,expectedtypeoptional[bytes],gotstrinstead在python文档中,它声明使用sep作为分隔符字符串。那么如何解决这个问题呢? 最佳答案 似乎rootPath被视为一个字节对象(也许是一个小错误?)或者警告是针对另一部分的。一般来说,PyCharm和错误本质上是在警告

python - 参数解析 : How to make mutually exclusive arguments optional?

我想像这样使用我的脚本:pythontest.pyrunpythontest.pystop我的代码是这样的:parser=argparse.ArgumentParser()command_group=parser.add_mutually_exclusive_group(required=True)command_group.add_argument('run',help='runit',action='store_true')command_group.add_argument('stop',help='stopit',action='store_true')当我执行它时,引发了一个