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

数据型网站建设我国做民宿的网站

数据型网站建设,我国做民宿的网站,wordpress 快速评论插件,湘潭网站建设方案案例Java有时可能非常棘手#xff0c;特别是在API设计中。 让我们看一个非常有趣的展示柜。 jOOQ强烈地将API与实现分开。 所有API都在org.jooq包中#xff0c;并且是公共的。 大多数实现都在org.jooq.impl包和package-private中。 只有工厂和一些专用的基础实现是公开的。 这允许… Java有时可能非常棘手特别是在API设计中。 让我们看一个非常有趣的展示柜。 jOOQ强烈地将API与实现分开。 所有API都在org.jooq包中并且是公共的。 大多数实现都在org.jooq.impl包和package-private中。 只有工厂和一些专用的基础实现是公开的。 这允许非常强大的包级封装几乎只向jOOQ用户公开接口。 包级封装的简化示例 大致来说jOOQ如何建模SQL表。 过于简化的API package org.jooq;/*** A table in a database*/ public interface Table {/*** Join two tables*/Table join(Table table); } 还有两个过于简化的实现类 package org.jooq.impl;import org.jooq.Table;/*** Base implementation*/ abstract class AbstractTable implements Table {Overridepublic Table join(Table table) {return null;} }/*** Custom implementation, publicly exposed to client code*/ public class CustomTable extends AbstractTable { } 内部API的公开方式 假设内部API在协方差方面有一些技巧 abstract class AbstractTable implements Table, InteralStuff {// Note, this method returns AbstractTable, as it might// prove to be convenient to expose some internal API// facts within the internal API itselfOverridepublic AbstractTable join(Table table) {return null;}/*** Some internal API method, also package private*/void doThings() {}void doMoreThings() {// Use the internal APIjoin(this).doThings();} } 乍一看这看起来很安全是吗 AbstractTable是包私有的但是CustomTable对其进行了扩展并继承了其所有API包括“ AbstractTable joinTable”的协变方法重写。 这会导致什么 查看以下客户代码 package org.jooq.test;import org.jooq.Table; import org.jooq.impl.CustomTable;public class Test {public static void main(String[] args) {Table joined new CustomTable();// This works, no knowledge of AbstractTable exposed to the compilerTable table1 new CustomTable();Table join1 table1.join(joined);// This works, even if join exposes AbstractTableCustomTable table2 new CustomTable();Table join2 table2.join(joined);// This doesnt work. The type AbstractTable is not visibleTable join3 table2.join(joined).join(joined);// ^^^^^^^^^^^^^^^^^^^ This cannot be dereferenced// ... so hide these implementation details again// The API flaw can be circumvented with castingTable join4 ((Table) table2.join(joined)).join(joined);} } 结论 篡改类层次结构中的可见性可能很危险。 注意以下事实在接口中声明的API方法始终是公共的而不管涉及非公共工件的任何协变实现。 如果API设计人员无法正确处理API用户这可能会很烦人。 在下一版的jOOQ中已修复 参考 Java的深度在JAVASQL和JOOQ博客中 JCG合作伙伴 Lukas Eder 通过协方差暴露了API泄漏 。 翻译自: https://www.javacodegeeks.com/2012/05/depths-of-java-api-leak-exposed-through.html
http://www.yutouwan.com/news/128459/

相关文章:

  • 东莞找网站设计搭建网站一般多少钱
  • 模型下载网站开发流程图好玩的传奇
  • 做网站的费用如何入账排行榜前十名
  • wordpress站点 HTML塑料瓶手工制作大全
  • 常州网站制作报价怀化物流网站建设报价
  • 网站开发通过什么途径接活官方网站怎么查询
  • 做网站设计需要具备哪些软件开发培训要学多久
  • 运动会页面设计seo文章代写一篇多少钱
  • 眼镜企业网站建设方案网站推广的特点
  • 网站建设过程中要注意沟通东平专业的网站制作
  • 浅谈网站建设浙江省住房与城乡建设部网站
  • 东莞商城网站建设哪里比较好浙江建设厅网站怎么进不去
  • 明年做哪个网站能致富Wordpress屏蔽国内iip
  • 门户网站标题居中加大小程序开发需要多少钱?
  • 私人做的不错的网站计算机网络工程师
  • 用织梦同时做两个网站做网站怎么租个域名
  • 丹江口网站开发自己建网站难吗
  • 网站建设公司 枫子伽叩无锡h5网站建设
  • 网站使用前流程网站建设公司兴田德润在那里
  • 网上购物软件排行榜360优化大师app
  • 做pc端网站方案网站制作中文版
  • 南漳网站开发羽毛球赛事编排
  • html5网站源码php网站开发需要什么基础只是
  • 苏州高端网站建设公司安防网站模板
  • nas搭建网站小程序定制公司哪家好
  • 网站开发实训教程微信小程序vr全景
  • 市场部做网站工作职责蓬莱网站建设公司报价
  • 做室内装修的网站电子简历表格 个人简历
  • 地产项目网站建设ppt一级造价师准考证打印时间
  • 做网站客户一般会问什么问题ci框架建设网站案例