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

松江网站建设品划网络网址检测

松江网站建设品划网络,网址检测,展馆展示设计公司排名推荐电脑,深圳论坛网站建设Java中,泛型用于编译阶段限制集合中元素的类型,或者限制类中某个属性的类型,编译过程中发生类型擦除,最终还是Object类型。 1. 集合中的泛型 集合默认可以存储任何类型的元素,即Object类型,当使用一个集合…

Java中,泛型用于编译阶段限制集合中元素的类型,或者限制类中某个属性的类型,编译过程中发生类型擦除,最终还是Object类型。

1. 集合中的泛型

集合默认可以存储任何类型的元素,即Object类型,当使用一个集合存储String类型元素时

不使用泛型
        List list = new ArrayList();list.add("a");// 当使用集合中的元素时,需要手动进行类型转换String str0 = (String) list.get(0);// 而且无法保证集合的正确性list.add(123);// 运行时报错类型转换异常 ClassCastExceptionString str1 = (String) list.get(1);
使用泛型
        List<String> list = new ArrayList<>();list.add("a");// 当使用集合中的元素时,通过泛型可以确定,集合中都是指定类型,故不需要手动进行类型转换String str0 = list.get(0);// list.add(123); // 编译不通过

2. 类中泛型

类中使用泛型与集合中同理,使用泛型可以避免使用时的手动强制转换,并保证数据的合法性。

不使用泛型
    public static void main(String[] args) {Box box = new Box("abc");String value = (String) box.getValue();box.setValue(123);// 运行时报错类型转换异常 ClassCastExceptionvalue = (String) box.getValue(); }static class Box {private Object value;public Box(Object value) {this.value = value;}public Object getValue() {return value;}public void setValue(Object value) {this.value = value;}}
3. 使用泛型
    public static void main(String[] args) {Box<String> box = new Box<>("abc");String value = box.getValue();// box.setValue(123); 编译不通过}static class Box<T> {private T value;public Box(T value) {this.value = value;}public T getValue() {return value;}public void setValue(T value) {this.value = value;}}

3. ?和 extends 和 super

? 表示不确定的类型,通常配置 extends 或 super,限制泛型的范围

    public static void main(String[] args) {// <? extends Animal>List<? extends Animal> extendsList = new ArrayList<>();// List<? extends Animal> 只允许读取,因为集合中的元素肯定是Animal或其子类Animal animal = extendsList.get(0); // List<? extends Animal> 不允许新增,因为只知道集合中的元素肯定是Animal或其子类,但无法确定类型的下限// extendsList.add(new Cat()); // <? super Animal>List<? super Animal> supperList = new ArrayList<>();// List<? super Animal> 允许新增Animal的子类,因为集合中的元素肯定是Animal或其父类supperList.add(new Cat());// List<? super Animal> 不允许读取为Animal,因为集合中的元素肯定是Animal或其父类类,但无法确定类型的上限// Animal animal = supperList.get(0); // 但是可以读取为Object,因为Object是所有类的父类Object object = supperList.get(0); // 通配符?List<?> list = new ArrayList<>();// List<?> 相当于 List<? extends Object>,只允许读取为Object,不允许新增list.get(0);}static class Animal {}static class Cat extends Animal {}static class Dog extends Animal {}

参考

https://blog.csdn.net/anlian523/article/details/1008655385538

http://www.dtcms.com/wzjs/261384.html

相关文章:

  • 专门做钣金的网站西安seo网站建设
  • 什么网站用来做商城好北京百度搜索优化
  • 保定网站建设方案托管长沙网站搭建优化
  • 王烨超长沙百度网站排名优化
  • 用thinkcmf做的网站制作一个网站的基本步骤
  • 无锡招标网官方网站网页制作模板
  • 小厂建网站网络营销工程师
  • 江阴那家网站做的好百度竞价开户公司
  • 福建省建设执业注册与管理中心网站仓山区seo引擎优化软件
  • 英文网站建设官网市场营销模式有哪些
  • 真正免费云服务器锦绣大地seo
  • 服务器网站80端口打不开站长工具百度百科
  • 苏州高端网站开发营销技巧和话术
  • 网站上的客服网络推广网上营销
  • 遵义在线新闻中心郑州企业网站优化排名
  • 网络营销推广网站收录哪些夸克搜索入口
  • 贵阳微信网站制作网店推广实训报告
  • 北京比较好的网站公司seo基础课程
  • 青岛物流网站建设谷歌google play官网
  • 免费网站建设系统seo搜索引擎优化薪资水平
  • 衡水做网站找谁软文写作的三个要素
  • 网站建设怎么办免费推广论坛
  • 专业网站开发开发百度经验怎么赚钱
  • 一流的南京网站建设查询网站注册信息
  • 域名注册好了怎么样做网站seo手机搜索快速排名
  • 民制作网站哪家便宜域名注册商怎么查
  • 营销手机网站中国营销传播网
  • 平面设计主要做什么工资多少关键词seo排名怎么选
  • 企业网站自助建网站建设费用明细表
  • 解决网站兼容性问题开封搜索引擎优化