当前位置: 首页 > news >正文

房产网有哪些网站同城app开发多少钱

房产网有哪些网站,同城app开发多少钱,在百度上做公司网站得多少钱,wordpress 电影插件我不时地想念Java中SQL的三值BOOLEAN语义。 在SQL中#xff0c;我们有#xff1a; TRUE FALSE UNKNOWN #xff08;也称为NULL #xff09; 时不时地#xff0c;我希望自己也能用Java表达这种UNKNOWN或UNINITIALISED语义#xff0c;而普通的true和false还不够。 实现… 我不时地想念Java中SQL的三值BOOLEAN语义。 在SQL中我们有 TRUE FALSE UNKNOWN 也称为NULL 时不时地我希望自己也能用Java表达这种UNKNOWN或UNINITIALISED语义而普通的true和false还不够。 实现一个ResultSetIterator 例如当为jOOλ实现ResultSetIterator时一个为Java 8建模SQL流的简单库 SQL.stream(stmt, Unchecked.function(r -new SQLGoodies.Schema(r.getString(FIELD_1),r.getBoolean(FIELD_2)) )) .forEach(System.out::println); 为了实现Java 8 Stream 我们需要构造一个Iterator 然后可以将其传递给新的Spliterators.spliteratorUnknownSize方法 StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator, 0), false ); 在Stack Overflow上可以看到另一个示例 。 在实现Iterator接口时我们必须实现hasNext()和next() 。 请注意在Java 8中 remove现在具有默认实现因此我们不再需要实现它。 虽然在大多数情况下对next()的调用之前仅是对hasNext()的调用但是Iterator协定中对此没有要求。 完全可以这样写 if (it.hasNext()) {// Some stuff// Double-check again to be sureif (it.hasNext() it.hasNext()) {// Yes, were paranoidif (it.hasNext())it.next();} } 如何将Iterator调用转换为JDBC ResultSet上的支持调用 我们需要调用ResultSet.next() 。 我们可以进行以下翻译 Iterator.hasNext() !ResultSet.isLast() Iterator.next() ResultSet.next() 但是那个翻译是 昂贵 没有正确处理空的ResultSet 并非在所有JDBC驱动程序中都实现对于结果集类型为TYPE_FORWARD_ONLY的ResultSet对isLast方法的支持是可选的 因此我们必须在内部维护一个标志该标志告诉我们 如果我们已经调用了ResultSet.next() 那个电话的结果是什么 除了创建第二个变量之外为什么不使用三值的java.lang.Boolean 。 这是jOOλ的可能实现 class ResultSetIteratorT implements IteratorT {final Supplier? extends ResultSet supplier;final FunctionResultSet, T rowFunction;final Consumer? super SQLException translator;/*** Whether the underlying {link ResultSet} has* a next row. This boolean has three states:* ul* linull: its not known whether there * is a next row/li* litrue: there is a next row, and it* has been pre-fetched/li* lifalse: there arent any next rows/li* /ul*/Boolean hasNext;ResultSet rs;ResultSetIterator(Supplier? extends ResultSet supplier, FunctionResultSet, T rowFunction, Consumer? super SQLException translator) {this.supplier supplier;this.rowFunction rowFunction;this.translator translator;}private ResultSet rs() {return (rs null) ? (rs supplier.get()) : rs;}Overridepublic boolean hasNext() {try {if (hasNext null) {hasNext rs().next();}return hasNext;}catch (SQLException e) {translator.accept(e);throw new IllegalStateException(e);}}Overridepublic T next() {try {if (hasNext null) {rs().next();}return rowFunction.apply(rs());}catch (SQLException e) {translator.accept(e);throw new IllegalStateException(e);}finally {hasNext null;}} } 如您所见 hasNext()方法仅在其之前为null时才本地缓存hasNext三值布尔状态。 这意味着多次调用hasNext() 直到调用next() 这将重置hasNext缓存状态。 如果需要 hasNext()和next()前进ResultSet游标。 可读性 你们中有些人可能会认为这不利于可读性。 他们将引入一个新变量例如 boolean hasNext; boolean hasHasNextBeenCalled; 麻烦的是您仍在实现三值布尔状态但分配给两个变量很难以一种比实际java.lang.Boolean解决方案更易读的方式来命名它们。 此外两个boolean变量实际上有四个状态值因此发生错误的风险会略有增加。 每个规则都有其例外。 自从引入Option / Optional以来一直存在的null -is-bad历史准则将null用于上述语义是一个很好的例外。 换句话说哪种方法最好 没有TRUE或FALSE答案只有UNKNOWN 小心一点 但是正如我们在上一篇博客文章中所讨论的那样 如果可能的话应该避免从API方法返回null 。 在这种情况下显式使用null作为建模状态的一种方法很好因为此模型封装在我们的ResultSetIterator 。 但是请避免将此类状态泄漏到API外部。 翻译自: https://www.javacodegeeks.com/2014/05/three-state-booleans-in-java.html
http://www.pierceye.com/news/652580/

相关文章:

  • 合肥做检查军大网站家装公司名称
  • 网站搜索怎么做的苏州网站建设介绍
  • 免费微网站建设地图标注收费属于违法行为吗
  • 网站开发工程师php岗位职责企业网站案例展示
  • 青岛网站营销推广网站工作室设计
  • 网站可以增加关键词吗做网站也是一门技术
  • 长沙 外贸网站建设公司排名传统文化传播公司网站建设
  • 站群seo技巧1 企业网站的一般内容是什么
  • 广东省城乡建设厅投诉网站首页wordpress posts
  • 泰安建设厅网站怎样给公司做一个网站
  • 扶贫网站开发的目的是什么2023年舆情分析报告
  • 河南建设银行处理违章网站网站做支付需要准备什么东西吗
  • 网站设置不能通过链接访问比较好的源码网站
  • 深圳做网站联雅空间业务建设网站
  • 合肥企业网站设计制作莱芜杂谈 莱芜话题
  • 大圣网站建设为什么不推荐大家去外包公司
  • 做网站手机版wordpress如何换成经典编辑器
  • 建设网站的知识企业做网站设计的
  • 西安网站排名分析软文营销把什么放在第一位
  • 织梦手机网站模板删除不了宁波网站建设服务商
  • 深圳网站建设最专业网站seo技术
  • 定制网站开发一般多少钱郑州哪家公司做网站好
  • jsp做的网站效果给你一个网站你怎么做的吗
  • 怎样做网站海报wordpress最近怎么又是5.0更新
  • 淡水网站建设哪家便宜设计网页分析
  • 长沙多迪php网站开发培训学校小说榜单首页百度搜索风云榜
  • 门户网站建设计入什么科目网站备案 时间更新
  • 企业建网站租用服务器好还是买一个好wordpress 预订插件
  • 电气建设网站下载的asp网站怎么打开
  • 南阳网站建设icp备手机应用商店免费下载