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

网站改版怎么办大庆信息网

网站改版怎么办,大庆信息网,wordpress 速度,网站建设公司郑州1.❤️❤️前言~#x1f973;#x1f389;#x1f389;#x1f389; Hello, Hello~ 亲爱的朋友们#x1f44b;#x1f44b;#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章#xff0c;请别吝啬你的点赞❤️❤️和收藏#x1f4d6;#x1f4d6;。如果你对我的…1.❤️❤️前言~ Hello, Hello~ 亲爱的朋友们这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章请别吝啬你的点赞❤️❤️和收藏。如果你对我的内容感兴趣记得关注我以便不错过每一篇精彩。 当然如果在阅读中发现任何问题或疑问我非常欢迎你在评论区留言指正️️。让我们共同努力一起进步 加油一起CHIN UP 个人主页E绵绵的博客 所属专栏 1. JAVA知识点专栏         深入探索JAVA的核心概念与技术细节 2.JAVA题目练习         实战演练巩固JAVA编程技能 3.c语言知识点专栏         揭示c语言的底层逻辑与高级特性 4.c语言题目练习         挑战自我提升c语言编程能力 持续更新中敬请期待❤️❤️ 借鉴的相关文章Java 中的泛型两万字超全详解_java 泛型-CSDN博客 2.泛型通配符 我们希望泛型能够处理某一类型范围的类型参数比如某个泛型类和它的子类为此 Java 引入了泛型通配符这个概念。 泛型通配符有 3 种形式 ? 被称作无限定的通配符。? extends T 被称作有上界的通配符。? super T 被称作有下界的通配符。 接下来将分别介绍 3 种形式的泛型通配符。 2.1上界通配符 ? extends T ? extends T 的定义  上界通配符 ? extends TT 代表了类型参数的上界? extends T表示类型参数的范围是 T 和 T 的子类。需要注意的是 ? extends T 也是一个数据类型实参它和 Number、String、Integer 一样都是一种实际的数据类型。 下面给个例子  public class GenericType {public static void main(String[] args) { ArrayListNumber list01 new ArrayListInteger();// 编译错误ArrayList? extends Number list02 new ArrayListInteger();// 编译正确} }我们发现ArrayList Integer 和 ArrayList Number 之间不存在继承关系所以编译错误。而引入上界通配符的概念后我们便可以用 ArrayList? extends Number 接收 ArrayList Integer 。 所以这也就意味着ArrayList? extends T能接收AraayListT或T的子类。 所以综上所述ArrayList? extends Number 可以代表 ArrayList Integer 、ArrayList Float 、… 、ArrayList Number 中的某一个集合但是我们不能指定 ArrayList? extends Number 的数据类型。这里有点难理解 public class GenericType {public static void main(String[] args) { ArrayList? extends Number list new ArrayList();list.add(new Integer(1));// 编译错误list.add(new Float(1.0));// 编译错误} }可以这样理解ArrayList? extends Number 集合表示了我这个集合可能是 ArrayList Integer 集合也可能是 ArrayList Float 集合… 还可能是 ArrayList Number 集合但到底是哪一个集合不能确定程序员也不能指定。 所以在上面代码中创建了一个 ArrayList? extends Number 集合 list但我们并不能往 list 中添加 Integer、Float 等对象这也说明了 list 集合并不是某个确定了数据类型的集合 思考那既然 ArrayList? extends Number 可以代表 ArrayList Integer 或 ArrayList Float 为什么不能向其中加入 Integer、Float 等对象呢 其原因是 ArrayList? extends Number 表示的是一个未知类型的 ArrayList 集合它可以代表 ArrayList Integer 或 ArrayList Float … 等集合但却不能确定它到底是 ArrayList Integer 还是 ArrayList Float 集合。因此泛型的特性决定了不能往 ArrayList? extends Number 集合中加入 Integer 、 Float 等对象以防止在获取 ArrayList? extends Number 集合中元素的时候产生 ClassCastException 异常。 那为什么还需要引入上界统配符的概念---- 答是为了拓展方法形参中类型参数的范围。下面有个例子  // 改写前 public class PairHelper {static int addPair(PairNumber p) {Number first p.getFirst();Number last p.getLast();return first.intValue() last.intValue();} }// 改写后 public class PairHelper {static int addPair(Pair? extends Number p) {Number first p.getFirst();Number last p.getLast();return first.intValue() last.intValue();} }在改写前我们无法使 addPair(Pair Number p) 方法接收 Pair Integer 对象。而在有了上界通配符的概念后这个问题便有了解决办法就是将 Number改写为? extends Number。由于 Pair Integer 可以被 Pair? extends Number接收 所以就能调用 addPair() 方法我们改写就成功了。 除了可以传入 Pair Integer 对象我们还可以传入 Pair Double 对象Pair BigDecimal 对象等等因为 Double 类和 BigDecimal 类也都是 Number 的子类。 ? extends T 的用法 上面说到我们无法确定 ArrayList? extends Number 具体是什么数据类型的集合因此其 add() 方法会受限即不能往集合中添加任何数据类型的对象但是可以往集合中添加 null因为 null 表示任何类型。  那我们该怎么办呢?以下是正确用法 上界通配符 ? extends T 的正确用法  public class Test {public static void main(String[] args) {// 创建一个 ArrayListInteger 集合ArrayListInteger integerList new ArrayList();integerList.add(1);integerList.add(2);// 将 ArrayListInteger 传入 printIntVal() 方法printIntVal(integerList);// 创建一个 ArrayListFloat 集合ArrayListFloat floatList new ArrayList();floatList.add((float) 1.0);floatList.add((float) 2.0);// 将 ArrayListFloat 传入 printIntVal() 方法printIntVal(floatList);}public static void printIntVal(ArrayList? extends Number list) {// 遍历传入的集合并输出集合中的元素 for (Number number : list) {System.out.print(number.intValue() );}System.out.println();} }在 printIntVal() 方法中其形参为 ArrayList? extends Number因此可以给该方法传入 ArrayList Integer 、ArrayList Float 等集合。 需要注意的是在 printIntVal() 方法内部必须要将传入集合中的元素赋值给Number 对象而不能赋值给某个子类对象 是因为根据 ArrayList? extends Number 的特性并不能确定传入集合的数据类型即不能确定传入的是 ArrayList Integer 还是 ArrayList Float 假设在 printIntVal() 方法中存在下面代码   Integer intNum (Integer) number;若是传入集合为 ArrayList Float 则必然会产生ClassCastException 异常。 下界通配符 ? super T 的错误用法 public class Test {public static void main(String[] args) {ArrayList? extends Number list new ArrayList();list.add(null);// 编译正确list.add(new Integer(1));// 编译错误list.add(new Float(1.0));// 编译错误}public static void fillNumList(ArrayList? extends Number list) {list.add(new Integer(0));//编译错误list.add(new Float(1.0));//编译错误list.set(0, new Integer(2));// 编译错误list.set(0, null);// 编译成功但不建议这样使用} }在 ArrayList? extends Number 集合中不能添加任何数据类型的对象只能添加空值 null因为 null 可以表示任何数据类型。  ? extends T 小结 一句话总结使用 extends 通配符表示后该数据只可以读不能写。 2.2下界通配符 ? super T ? super T 的定义 下界通配符 ? super TT 代表了类型参数的下界? super T表示类型参数的范围是 T 和 T 的超类直至 Object。需要注意的是 ? super T 也是一个数据类型实参它和 Number、String、Integer 一样都是一种实际的数据类型。 下面给个例子 public class GenericType {public static void main(String[] args) { ArrayListInteger list01 new ArrayListNumber();// 编译错误ArrayList? super Integer list02 new ArrayListNumber();// 编译正确} }我们发现ArrayList Integer 和 ArrayList Number 之间不存在继承关系所以编译错误。而引入上界通配符的概念后我们便可以用 ArrayList? super Number 接收 ArrayList Integer 。 所以这也就意味着ArrayList? super T能接收AraayListT或T的父类。 ArrayList? super Integer 只能表示指定类型参数范围中的某一个集合但我们不能指定 ArrayList? super Integer 的数据类型。这里有点跟上界通配符一样难理解 下面请看例子 public class GenericType {public static void main(String[] args) { ArrayList? super Number list new ArrayList();list.add(new Integer(1));// 编译正确list.add(new Float(1.0));// 编译正确// Object 是 Number 的父类 list.add(new Object());// 编译错误} }这里奇怪的地方出现了为什么和ArrayList? extends Number 集合不同 ArrayList? super Number 集合中可以添加 Number 类及其子类的对象呢 其原因是 ArrayList? super Number 的下界是 ArrayList Number 。因此我们可以确定 Number 类及其子类的对象自然可以加入 ArrayList? super Number 集合中 而 Number 类的父类对象就不能加入 ArrayList? super Number 集合中了因为不能确定 ArrayList? super Number 集合的数据类型。 ? super T 的用法  下界通配符 ? super T 的正确用法 public class Test {public static void main(String[] args) {// 创建一个 ArrayList? super Number 集合ArrayListNumber list new ArrayList(); // 往集合中添加 Number 类及其子类对象list.add(new Integer(1));list.add(new Float(1.1));// 调用 fillNumList() 方法传入 ArrayListNumber 集合fillNumList(list);System.out.println(list);}public static void fillNumList(ArrayList? super Number list) {list.add(new Integer(0));list.add(new Float(1.0));} }与带有上界通配符的集合ArrayList? extends T只能添加null不同带有下界通配符的集合ArrayList? super Number 中可以添加 Number 类及其子类的对象ArrayList? super Number的下界就是ArrayListNumber集合因此其中必然可以添加 Number 类及其子类的对象但不能添加 Number 类的父类对象不包括 Number 类。 下界通配符 ? super T 的错误用法 public class Test {public static void main(String[] args) {// 创建一个 ArrayListInteger 集合ArrayListInteger list new ArrayList();list.add(new Integer(1));// 调用 fillNumList() 方法传入 ArrayListInteger 集合fillNumList(list);// 编译错误}public static void fillNumList(ArrayList? super Number list) {list.add(new Integer(0));// 编译正确list.add(new Float(1.0));// 编译正确// 遍历传入集合中的元素并赋值给 Number 对象会编译错误for (Number number : list) {System.out.print(number.intValue() );System.out.println();}// 遍历传入集合中的元素并赋值给 Object 对象可以正确编译// 但只能调用 Object 类的方法不建议这样使用for (Object obj : list) {System.out.println(obj);使用}} }注意ArrayList? super Number 代表了 ArrayList Number 、 ArrayList Object 中的某一个集合而 ArrayList Integer 并不属于 ArrayList? super Number 限定的范围因此不能往 fillNumList() 方法中传入 ArrayList Integer 集合。 并且不能将传入集合的元素赋值给 Number 对象因为传入的可能是 ArrayList Object 集合向下转型可能会产生ClassCastException 异常。 不过可以将传入集合的元素赋值给 Object 对象因为 Object 是所有类的父类不会产生ClassCastException 异常但这样的话便只能调用 Object 类的方法了不建议这样使用。 ? super T 小结 一句话总结使用 super 通配符表示可以写但不能读。 2.3无限定通配符 ? 我们已经讨论了? extends T和? super T作为方法参数的作用。实际上Java 的泛型还允许使用无限定通配符?即只定义一个?符号。 ​​​​​​​无界通配符?? 代表了任何一种数据类需要注意的是 ? 也是一个数据类型实参它和 Number、String、Integer 一样都是一种实际的数据类型。 例如ArrayList? 可以接收 ArrayList Integer、ArrayList Number 、ArrayList Object 中的某一个集合。 举例如下 public class GenericType {public static void main(String[] args) {ArrayListInteger list01 new ArrayList(123, 456);ArrayList? list02 list01; // 安全地向上转型} }上述代码是可以正常编译运行的因为 ArrayList? 可以接收ArrayList Integer 》 ArrayList? 既没有上界也没有下界因此它可以代表所有数据类型的某一个集合但我们不能指定 ArrayList? 的数据类型。 public class GenericType {public static void main(String[] args) {ArrayList? list new ArrayList();list.add(null);// 编译正确Object obj list.get(0);// 编译正确list.add(new Integer(1));// 编译错误Integer num list.get(0);// 编译错误} }ArrayList? 集合的数据类型是不确定的因此我们只能往集合中添加 null而我们从 ArrayList? 集合中取出的元素也只能赋值给 Object 对象不然会产生ClassCastException 异常原因可以结合上界和下界通配符理解 3.? extends T与? super T 对比 1对于? extends 类型编译器将只允许读操作不允许写操作。即只可以取值不可以设值。2对于? super 类型编译器将只允许写操作不允许读操作。即只可以设值比如 set 操作不可以取值比如 get 操作。 以上两点都是针对于源码里涉及到了类型参数的方法而言的。 比如对于 List 而言不允许的写操作有 add 方法因为它的方法签名是boolean add(E e);此时这个形参 E 就变成了一个涉及了通配符的类型参数而不允许的读操作有 get 方法因为它的方法签名是E get(int index);此时这个返回值 E 就变成了一个涉及了通配符的类型参数。 4.总结  所以我们泛型的进阶部分就结束了把通配符讲完了我们数据结构部分也就结束了。接下来将学习新的篇章——数据库数据库会不会开一个新的专栏有待商酌。 在此我们诚挚地邀请各位大佬们为我们点赞、关注并在评论区留下您宝贵的意见与建议。让我们共同学习共同进步为知识的海洋增添更多宝贵的财富❤️❤️
http://www.dnsts.com.cn/news/24956.html

相关文章:

  • 优化网站入口页面的四个维度江门制作手机网站
  • 宝安建设投资集团网站南宁网站设计可以找我
  • 温州快建网站wordpress 间距
  • 手机网站切图织梦网站模板怎么用
  • 南通制作网站3d动画制作教程视频
  • 怎么知道网站程序是什么做的网站界面设计修改要多少钱
  • 怎么做网站自动响应杭州网站设计予尚
  • 遵义做推广网站甘肃路桥建设集团有限公司网站
  • 为什么局域网做网站汇云网站建设
  • 网站开发公司经营范围怎么写代做道具网站
  • 如何建设本地网站百度推广关键词技巧定价
  • 河南省网站宁波网站搭建
  • 没有网站也可以做推广吗wordpress不能上传附件
  • 如何做网站短链接了解互联网 网站
  • 鹤壁哪里做网站哪些网站用django做的
  • 国外创意网站欣赏国内有什么网站
  • 阜城网站建设公司军事新闻内容摘抄
  • 网站权限怎么设置做花馍网站
  • 北京网站设计优选刻珠海网站制作外包
  • 商丘做网站哪个好app开发的价格清单
  • 排名好的郑州网站建设做视频网站视频存放问题
  • 网络站点推广的方法有哪些怎样给企业做网站
  • 怎么做多语言网站找资料的免费网站
  • 过时的网站昆明装修公司
  • 服装网站建设策划书预期投入商城网站建设是 什么软件
  • 玩具网站开发背景建盏公司官方网站
  • 郑州巩义网站建设简单网站建设合同
  • 做效果图的方便的网站优秀响应式网站
  • 深圳网站制作公司哪家好天津北京网站建设公司
  • 政企网站建设网站布局方法分类