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

企业网站改自适应皮皮果网站建设

企业网站改自适应,皮皮果网站建设,企业手机网站案例,网络美工是干啥的tcga癌症亚型获取Java 5已将通用多态性引入Java生态系统。 即使我们都知道由于泛型类型擦除及其后果而引起的无数警告#xff0c;这还是对Java语言的重要补充。 通用多态性#xff08;也称为参数多态性 #xff09;通常与可能预先存在的亚型多态性正交。 一个简单的例子是co… tcga癌症亚型获取 Java 5已将通用多态性引入Java生态系统。 即使我们都知道由于泛型类型擦除及其后果而引起的无数警告这还是对Java语言的重要补充。 通用多态性也称为参数多态性 通常与可能预先存在的亚型多态性正交。 一个简单的例子是collections API List? extends Number c new ArrayListInteger(); 在上面的示例中子类型ArrayList被分配给超类型List的变量。 同时使用Integer类型对ArrayList进行参数化可以将其分配给兼容的参数超类型? extends Number ? extends Number 。 在通用多态性的情况下这种子类型多态性的用法也称为协方差 尽管当然也可以在非通用上下文中实现协方差。 具有通用多态性的协方差 协方差对于泛型很重要。 它允许创建复杂的类型系统。 简单的示例涉及将协方差与通用方法结合使用 E extends Serializable void serialize(CollectionE collection) {} 上面的示例接受任何Collection类型可以在调用站点使用诸如List ArrayList Set等类型对它进行子类型化。 同时仅要求调用站点上的泛型类型参数是Serializable的子类型。 即它可以是ListInteger或ArrayListString等。 将亚型多态性与通用多态性相关联 于是人们常常被引诱去关联两种正交类型的多态性。 这种相关性的一个简单示例是将IntegerList或StringSet专门IntegerList class IntegerList extends ArrayListInteger {} class StringSet extends HashSetString {} 这是很容易看到明确的类型的数量会爆炸如果你开始跨越亚型和泛型类型层次的笛卡尔积希望通过创建之类的东西更精确地专门IntegerArrayList IntegerAbstractList IntegerLinkedList等。 使相关性通用 从上面可以看出这种关联通常会从类型层次结构中删除通用性尽管并不需要这样做。 在以下更一般的示例中可以看出 // AnyContainer can contain AnyObject class AnyContainerE extends AnyObject {} class AnyObject {}// PhysicalContainer contains only PhysicalObjects class PhysicalContainerE extends PhysicalObjectextends AnyContainerE {} class PhysicalObject extends AnyObject {}// FruitContainer contains only Fruit, // which in turn are PhysicalObjects class FruitContainerE extends Fruitextends PhysicalContainerE {} class Fruit extends PhysicalObject {} 上面的示例是一个典型的示例其中API设计者被诱使子类型多态性 Fruit extends PhysicalObject extends AnyObject 与泛型多态性 E 相关联同时保持泛型从而允许在FruitContainer添加其他子类型。 AnyObject当AnyObject应该知道其自己的子类型时这会变得更加有趣。 这可以通过递归泛型参数来实现。 让我们修复前面的示例 // AnyContainer can contain AnyObject class AnyContainerE extends AnyObjectE {} class AnyObjectO extends AnyObjectO {}// PhysicalContainer contains only PhysicalObjects class PhysicalContainerE extends PhysicalObjectEextends AnyContainerE {} class PhysicalObjectO extends PhysicalObjectOextends AnyObjectO {}// FruitContainer contains only Fruit, // which in turn are PhysicalObjects class FruitContainerE extends FruitEextends PhysicalContainerE {} class FruitO extends FruitOextends PhysicalObjectO {} 这里有趣的部分不再是容器而是AnyObject类型层次结构该结构将子类型多态与自身类型上的通用多态相关联 这也可以通过java.lang.Enum完成 public class EnumE extends EnumE implements ComparableE {public final int compareTo(E other) { ... }public final ClassE getDeclaringClass() { ... } }enum MyEnum {}// Which is syntactic sugar for: final class MyEnum extends EnumMyEnum {}危险所在 枚举和我们的自定义之间的细微差别AnyObject层次是事实MyEnum通过被终止的两个正交分型技术递归自相关final 另一方面除非将AnyObject子类型也AnyObject为最终类型否则不应将其删除。 一个例子 // Dangerous class Apple extends FruitApple {}// Safe final class Apple extends FruitApple {} 为什么final如此重要或者换句话说为什么在终止递归自相关例如Apple之前时必须小心AnyObject子类型 这很简单。 让我们假设以下内容 class AnyObjectO extends AnyObjectOimplements ComparableO {Overridepublic int compareTo(O other) { ... }public AnyContainerO container() { ... } } 上述关于AnyObject.compareTo()约定意味着 AnyObject任何子类型都只能与同一子类型进行比较。 以下是不可能的 Fruit? fruit // ... Vegetable? vegetable // ...// Compilation error! fruit.compareTo(vegetable); 层次结构中当前唯一可比较的类型是Apple Apple a1 new Apple(); Apple a2 new Apple();a1.compareTo(a2); 但是如果我们想添加GoldenDelicious和Gala苹果怎么办 class GoldenDelicious extends Apple {} class Gala extends Apple {} 我们现在可以比较它们 GoldenDelicious g1 new GoldenDelicious(); Gala g2 new Gala();g1.compareTo(g2); 这不是AnyObject作者的AnyObject 这同样适用于container()方法。 允许子类型协变地专门化AnyContainer类型这很好 class FruitO extends FruitOextends PhysicalObjectO {Overridepublic FruitContainerO container() { ... } } 但是 GoldenDelicious和Gala的container()方法会GoldenDelicious GoldenDelicious g new GoldenDelicious(); FruitContainerApple c g.container(); 是的它将返回一个Apple容器而不是AnyObject设计人员想要的GoldenDelicious容器。 子类型多态和泛型多态跨越正交类型轴。 使它们相互关联可能是类型系统中的设计气味。 使它们在同一类型上关联是危险的因为很难正确处理。 用户将尝试终止基本类型的子类型上的递归泛型类型定义。 终止的原因是具有递归自绑定的基本类型很难使用的事实。 但是终止通常会出错因为它只能在final类上执行而不能在常规类或接口上执行。 换句话说如果您认为需要基于通用基本类型的递归泛型类型定义请仔细考虑如果确实需要并且您的类型用户可以在final类中正确终止递归泛型类型定义。 参考来自JACG SQL和JOOQ博客的JCG合作伙伴 Lukas Eder提出的将子类型多态与通用多态相关联的危险 。 翻译自: https://www.javacodegeeks.com/2013/07/the-dangers-of-correlating-subtype-polymorphism-with-generic-polymorphism.htmltcga癌症亚型获取
http://wiki.neutronadmin.com/news/10610/

相关文章:

  • 可以做网站吗wordpress列表分页
  • 傻瓜式网站制作网站开发5人小组分工
  • 广西网站推广企业网站模板下载价格多少
  • 乐清企业网站建站软件开发是怎么开发的啊
  • 软件定制网站优化 seo一站式大宗商品价格查询网站
  • vs手机网站开发wordpress主题 vieu
  • 自己做网站 需要哪些东西新建站点的步骤
  • 一级域名做网站360搜索引擎的特点
  • 网站创意李宁运动服网站建设规划书
  • 做设计找图片的网站有哪些企业网站建设价钱
  • 购物网站类型合肥手机网站开发
  • 上海 网站建设 排名网站建设方案的内容
  • 校园文化建设相关网站媒体运营具体做什么
  • 泰安网站建设公司新网站该如何做网站优化呢
  • 网站策划主要做什么工作江苏镇江
  • 网站网页设计基本理论网络科技公司注册要求
  • 免费做网站通栏广告大学生简历模板
  • 什么网站做蔬菜生鲜比较好做301到别人网站
  • 达州网站建设qinsanw代理做网站合适吗
  • 在线收录windows优化大师自动安装
  • 中介网站建设网易企业邮箱改密码
  • 房产网站如何做泉州最专业手机网站建设定制
  • 基本网站建设知识兴国县城乡规划建设局网站
  • 手机做服务器建网站建e网app下载
  • 半成品公司 网站网络广告推广公司
  • 重庆建网站优化嘉兴城乡建设局网站
  • 公司网站开发多少钱asp美食网站源码
  • 网站如何防注册机好男人的最好的影院
  • 网站怎么做内链哈尔滨最新发布公告
  • 代理网页游戏需要多少钱seo关键词怎么优化