我有以下代码,在调用.getList()时抛出。get(0)为空。
Optional<MyObject> _obj = java.util.Optional.ofNullable(objParam);
// where getListOfMyObjects() returns List<MyObjects>
Optional<String> desc = Optional.ofNullable(_obj.get().getMyParentObject().getListOfMyObjects().get(0).getDesc());
如何编写安全的java 8可选代码(使用. map等),以防止. getList(). get(0)抛出?
这是你想做的吗?
Optional<String> desc = Optional.ofNullable(objParam)
.map(MyObject::getMyParentObject)
.map(MyObject::getListOfMyObjects)
.filter(lst -> ! lst.isEmpty())
.map(lst -> lst.get(0))
.map(MyObject::getDesc);
另一种方法是获取列表的流
,然后使用findFirst
。我不确定在可选中使用流是否非常清楚,但以下是您这样做的方法:
Optional<String> desc = Optional.ofNullable(objParam)
.map(MyObject::getMyParentObject)
.map(MyObject::getListOfMyObjects)
.map(List::stream)
.flatMap(Stream::findFirst)
.map(MyObject::getDesc);
问题内容: 我现在在代码中使用ReentrantReadWriteLock来同步树状结构的访问。这种结构很大,可以被许多线程同时读取,偶尔对其一部分进行修改,因此似乎很适合读写习惯。我了解到,对于这一特定类,不能将读取锁提升为写入锁,因此根据Javadocs,必须在获得写入锁之前释放读取锁。之前,我已经在非可重入上下文中成功使用了这种模式。 但是,我发现我无法可靠地获取写锁而不会永远阻塞。由于读锁
嗨我有以下方法: 不得不提的是,startDate和endDate是长变量。我尝试在if条件中添加null检查,也尝试使用longValue()方法,但没有结果。你知道我怎样才能解决这个问题吗?可能是fndBugs端的bug?
我应该写吗 而是为这样的架构做好准备,还是仅仅是我的偏执狂?
问题内容: 在Mysql中,有一个比较运算符,该运算符为null安全:<=>。创建如下这样的准备好的语句时,我在Java程序中使用了它: 现在,我想切换到H2数据库。如何在纯SQL中编写<=>运算符(例如使用IS NULL和IS NOT NULL)?我只想使用stmt.setString操作 一次 。可以多次写入列名。 参考:http : //dev.mysql.com/doc/refman/5.
问题内容: 在Mysql中,有一个比较运算符,该运算符是null安全的:<=>。创建如下这样的准备好的语句时,我在Java程序中使用了它: 现在,我想切换到H2数据库。如何在纯SQL中编写<=>运算符(例如使用IS NULL和IS NOT NULL)?我只想使用stmt.setString操作 一次 。可以多次写入列名。 相关问题是在SQL中获取null == null。但是该答案要求将搜索值写入
我在运行一个简单的helloworld示例drools项目时遇到了以下错误。 代码: 口水代码: