Integer问题和通配符问题

Posted PottyHarry

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Integer问题和通配符问题相关的知识,希望对你有一定的参考价值。

一、关于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问题和通配符问题的主要内容,如果未能解决你的问题,请参考以下文章

有人可以解释以下 R 代码片段吗? [关闭]

操作 Java 泛型:泛型在继承方面体现与通配符使用

Java泛型之通配符

java中的泛型T与通配符?概念入门

计算机程序的思维逻辑 (36) - 泛型 (中) - 解析通配符

类型通配符 (?)