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

建设工程新工艺网站做毕设好的网站

建设工程新工艺网站,做毕设好的网站,商标图案,沧浪手机网站建设方案泛型类型通配符限定 #x1f686;PECS | 类型通配符限定如何使用“? extends T”和“? super T”通配符java源码示例PECS | 类型通配符限定 PECS原则是指在使用泛型时#xff0c;当我们需要传递一个泛型集合时#xff0c;如何选择适当的泛型类型通配符来… 泛型类型通配符限定 PECS | 类型通配符限定如何使用“? extends T”和“? super T”通配符java源码示例PECS | 类型通配符限定 PECS原则是指在使用泛型时当我们需要传递一个泛型集合时如何选择适当的泛型类型通配符来限制集合中元素的类型。 这个原则有两个部分 第一部分“Producer Extends”表示如果一个集合中的元素将被频繁读取而不是修改那么我们应该使用限定类型通配符“? extends T”。这是因为如果我们使用非限定的类型参数 T我们只能够保证集合中的元素是 T 类型而不能保证它们的子类类型。但如果我们使用“? extends T”我们可以确保集合中的元素类型是 T 或其子类因此我们可以安全地从集合中读取元素并使用它们。 第二部分“Consumer Super”表示如果一个集合中的元素将被经常插入而不是读取那么我们应该使用“? super T”通配符。这是因为使用非限定类型参数 T 时我们只能保证集合中的元素类型是 T 或其父类类型而不能保证它们是 T 类型或其子类类型。但如果我们使用“? super T”我们可以安全地将类型为 T 或其子类类型的元素插入到集合中因为这些元素都是 T 类型或其父类类型。 因此PECS原则帮助我们选择适当的泛型类型通配符以确保我们在使用泛型时能够正确地读取或修改集合中的元素从而增强代码的可读性和可维护性。 如何使用“? extends T”和“? super T”通配符 假设我们有一个 Animal 类型和它的两个子类 Dog 和 Cat class Animal {} class Dog extends Animal {} class Cat extends Animal {} 现在我们有一个方法接受一个 Animal 类型的集合并返回其中最后一个元素。我们可以这样实现该方法 public static T T getLast(ListT list) {if (list.isEmpty()) {return null;} else {return list.get(list.size() - 1);} } 这个方法可以接受一个 Animal 类型的集合但我们也可以使用限定类型通配符“? extends T”来表示集合中的元素类型是 T 或其子类类型。这样我们就可以调用这个方法来获取一个元素类型为 Dog 或 Cat 的集合的最后一个元素 ListDog dogs Arrays.asList(new Dog(), new Dog()); Dog lastDog getLast(dogs);ListCat cats Arrays.asList(new Cat(), new Cat()); Cat lastCat getLast(cats); 这里使用“? extends T”通配符允许我们将 List 和 List 都传递给 getLast 方法因为它们都是 Animal 类型的子类。 另一个示例是假设我们有一个方法接受一个 Animal 类型的集合和一个 Animal 类型的元素将元素插入集合的最前面 public static void insertFirst(List? super Animal list, Animal animal) {list.add(0, animal); } 这个方法使用“? super T”通配符表示集合中的元素类型是 T 或其父类类型。这样我们就可以调用这个方法来将一个类型为 Dog 或 Cat 的元素插入到一个类型为 Animal 的集合中 ListAnimal animals new ArrayList(); Dog dog new Dog(); insertFirst(animals, dog);Cat cat new Cat(); insertFirst(animals, cat); 这里使用“? super Animal”通配符允许我们将 Animal、Dog、Cat 都插入到类型为 Animal 的集合中因为它们都是 Animal 类型或其子类类型。 java源码示例 有一些 Java 标准库中的方法使用了“? extends T”和“? super T”通配符同时出现。一个经典的例子是 Collections.copy 方法它将一个集合的内容复制到另一个集合中 public static T void copy(List? super T dest, List? extends T src) {int srcSize src.size();if (srcSize dest.size()) {throw new IndexOutOfBoundsException(Source does not fit in dest);}for (int i 0; i srcSize; i) {dest.set(i, src.get(i));} } 在这个方法中我们同时使用了“? super T”和“? extends T”通配符因为我们需要同时支持将元素类型为 T 或其子类类型的源集合复制到元素类型为 T 或其父类类型的目标集合中。 通过使用“? extends T”通配符来限制源集合的元素类型我们可以确保源集合中的元素类型是 T 或其子类类型。通过使用“? super T”通配符来限制目标集合的元素类型我们可以确保目标集合中的元素类型是 T 或其父类类型。这样即使源集合的元素类型是目标集合元素类型的子类我们也可以安全地将源集合中的元素复制到目标集合中。 以下是使用 Collections.copy 方法的示例代码 ListAnimal animals new ArrayList(Arrays.asList(new Animal(), new Animal())); ListDog dogs Arrays.asList(new Dog(), new Dog()); Collections.copy(animals, dogs); 在这个示例中我们将一个元素类型为 Dog 的集合复制到一个元素类型为 Animal 的集合中。由于我们在 copy 方法中使用了“? super T”和“? extends T”通配符所以我们可以正确地将元素类型为 Dog 的集合复制到元素类型为 Animal 的集合中。
http://www.hkea.cn/news/14370352/

相关文章:

  • 瑞安网站设计网络媒体设计与制作
  • 最优秀的无锡网站建设宁河网站建设
  • 网站备案号申请濮阳做网站
  • 环保设备在那个网站做商标设计logo图案设计软件
  • 成都网站建设服务公司关键词百度云
  • 成都高新区网站建设wordpress安装md
  • 做湘菜的网站安卓手机app应用开发
  • 株洲网站建设开发icp备案网站接入信息ip地址段怎么填
  • 如何做阿里巴巴网站手机qq浏览器网页安全防护怎么关
  • 广州 网站开发 骏域什么网站推广比较好
  • 网站规划详细设计怎么写wordpress 代码在哪里修改
  • 网站建设应遵守的原则企业vi设计欣赏
  • 网上做题扣分在哪个网站上做郑州seo培训班
  • 用asp.net做购物网站北湖区网站建设专业
  • 宜春做网站的数据库内容进 wordpress
  • 吉林省软环境建设网站微信推广文案范文
  • 网站推广存在的问题网站建设论文选题
  • 公司一定建设网站我要推广
  • 一诺建站新媒体营销有哪些岗位
  • 用家用路由器ip做网站WordPress前端文本图片添加
  • 校园服装网站建设预算网站建设话术分析
  • 做网站销售会遇到哪些问题烟台专门做网站的
  • 网站建设中采用的技术方案嘉兴网站建设网站建设
  • 网站建设策划书ppt郑州网站制作工作室
  • 百度网站公司信息推广怎么做的承接网站开发文案
  • 我国网站开发行业门户网站程序
  • 网站的技术维护一般要做些什么seo与sem的关系
  • 钓鱼网站下载页面设计模板网站
  • 专业网站制作价格wordpress安装无法创建目录.
  • 新乡网站建设哪家公司好Dw做html网站