码迷,mamicode.com
首页 > 其他好文 > 详细

Integer问题和通配符问题

时间:2018-03-10 11:53:40      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:details   void   重写   系统   color   参数   下界   intval   com   

一、关于Integer

  • 首先补充下昨天的
  • intValue()方法 :以 int 类型返回该 Integer 的值。

Integer方法,在其内部类IntegerCache中缓存了-128到127之间的整数,所有如果是这期间的数,系统不会重新new一个Integer,也就是说两个Integer引用变量所指向的对象是一样的。

如果超过这个数值,那么进行对比返回的就是False.

二、关于通配泛型放的位置

通配符总共有三种类型:1、?:无界通配符  2、? extends 父类 :上界通配符  3、? super 子类 :下界通配符

今早研究了一下,发现了一些问题:

举个例子,父类Animals  子类有Dog和Cat ,Dog有子类SmallDog

在方法外头设置<T>的概念

1 public static <T> void print(T t) { //那么,没有这样的类型来提供使用,怎么办呢?
2     //于是用<T>来声明一种“泛型”,然后参数就可以用T这种泛型来定义,否则没有参数类型没法定义参数
3         System.out.println(t);
4     }

在方法参数里头设置

1 public  static void eat(List<? super Dog> animals){
2         Dog dog = (Dog) animals.get(1);
3         dog.shout();
4     }

着重分析一下上界通配符和下界通配符,上界通配符可以放在方法体的外头或者直接放在方法的参数,例如

1 public  static void eat(List<? extends Animals> animals){
2         for(Animals an:animals)
3                an.shout();
4     }
1  public  static <E extends Animals> void eat(List<E> animals){
2          for(Animals an:animals)
3               an.shout();  
4   }

而下界通配符,因为父类不能强转为子类,所有它是混着用的,不能直接<E super 子类>,可以这样<E extends 父类<? super E>>

1 public  static void eat(List<? super Dog> animals){
2         Dog dog = (Dog) animals.get(1);
3         dog.shout();
4     }

上界通配符:

  • ? extends E 名为:向上限定,?代表E及其子类,也可以称之为:泛型固定上边界;
  • 当创建集合对象,List<? extends Person> list = new ArrayList<Person>();不能做添加操作,以及其他相关的操作
  •   原因:是在你做添加操作的时候,你只知道,你添加数据的上限。但是你无法确定你要添加数据的下限。
  • 当你做添加操作的时候,确定你具体添加的是什么类型,子类重写的方法,也必须是该类型的或者该类型的子类。
  • 但是,如果你添加的类型,和你的对象(例如:new ArrayList<Person>())中的类型不匹配,在实际操作中是有问题的。
  • 故而为了避免这种问题(类型转换异常),干脆不让你操作。

下界通配符:

  • 但是 ?super E 向下限定,E及其父类(泛型固定下边界)在做添加的时候是不会有问题的。
  • 因为:你泛型的下边界,已经限制。再向集合中添加数据,只能是期本身或者他的子类。
  • List<? super Person> list = new ArrayList<Person>();
  • 在此只能添加 Person对象,已经Person的子类。

参考链接:

http://blog.csdn.net/baple/article/details/25056169

http://blog.csdn.net/a695571342qqcom/article/details/53437125

 

Integer问题和通配符问题

标签:details   void   重写   系统   color   参数   下界   intval   com   

原文地址:https://www.cnblogs.com/shigeng/p/8536946.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!