Java基础 - 泛型


2.没有泛型的缺点:
   1). 从集合中获取对象时可能需要进行类型转换
   2). 还可能产生一个运行时错误: java.lang.classcastException

3.泛型的核心思想: 把一个list(集合)中的内容限制为一个特定的数据类型

4.面试问题:   sql,泛型
   下面的代码片断合法吗?
    List<String> ls = new ArrayList<String>(); //1 --ok
    List<Obijct> lo = ls; //2 --false

  答案:
      假设第二行合法,则:
      lo.add(new object);//3
      String s = ls.get(0);//4 试图把object赋值给string

      这里,我们使用ls指向ls.
      通过lo来访问ls,一个string的list
      可以插入任意对象进去,结果是ls中保存不再是string
      当我们试图从中取出元素的时候,会得到意外的结果。

      所以第二行代码不合法。

    **结论:如果Foo是Bar的一个子类型(子类或者子接口),而G是某种泛型声明,那么G<Foo>是G<Bar>的子类型并不成立!!

5.各种collections的父类: Collection<?>,  ?即为泛型中的通配符,代表可以是任意类型

6.什么时候使用泛型方法,又什么时候使用通配符类型那?
  泛型函数容许类型参数用来表示方法的一个或多个参数之间的依赖关系,或者参数与其返回值的依赖关系
  如果没有这样的依赖关系,不应该使用泛型方法,而改为使用通配符

7.面试的问题:
    
         List<String> l1 = new ArrayList<String>();
         List<Integer> l2 = new ArrayList<Integer>();
         System.out.println(l1.getClass() == l2.getClass()); // true
   答案:
      它打印出为true
      因为所有的泛型类型在运行时有同样的类(class -- class java.util.ArrayList),而不管它们的实际类型参数
      泛型之所以为泛型就是因为它对所有其可能的参数类型,有同样的行为;同样的类可以被当做许多不同的类型。

8.下限通配符:语法 ? super T 表示T的一个未知的父类(或者是T自己)
   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值