黑马训练营---------------泛型

---------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! ---------------------- 

一 泛型 generic(通用)
 1 1.5版本的新特性用于解决安全问题。
 2  将运行时期出现的问题 ClassCastExcepion转移到了编译时期,方便了程序员解决问题。

 3 好处是提高了扩展性,但坏处是不能用类型的特有方法
 
 
二 泛型前后的对比
class Student
{}
class Worker
{}
泛型前
class Tool
{
 Private Object obj;
 public void setObject(Object obj)
 {
  this.obj=obj;
 }
 public Object getObject();
 {
  return obj;
 }
}
泛型后
class Tool<Q>
{
 private QQ q;
 public void setObject(QQ q)
 {
  this.q=q;
 }
 public QQ getObject()
 {
  return q; 
 }

}

三 泛型在方法上的定义
class Demo<T>
{
 public void show(T t)
 {}
 Public <Q> void print<Q q>
 {}
 public static <W> void haha<W w>
 {}//注意:1 静态方法不可以访问类上定义的泛型,
    2 如何静态方法操作的引用数据类型不确定是,可以将泛型定义在方法上。
}


四  通配符
 
1 通配符 “?” 也可以理解为占位符。代表任意范围
class  Test

{
 public static void main(String[] args)
 {
    ArrayList<Integer> ali=new ArrayList<Integer>();
  
  ArrayList<String> al=new ArrayList<String>();
  methed_1(al);
  
 }
 public static void methed_1(Collection<? > t)//好处,能够将属于同一个体系里面的类的共性方法提取出来,简化了代码的书写,又能够保证数据的安全。不足之处就是只能够打印?这歌类型,并且在函数里面只能够条用?类型的方法。
 {
  Iterator<? > it=t.iterator();
  while(it.hasNext())
  {
   System.out.println(it.next());
  }
 }

}

2 泛型的限定(对接收的范围进行了限定)
 a 注意;泛型的两边加的必须一样。
 b ? extends E;表示能够接收E或者是E的子类,称为上限。
 c ? super E:表示能够接受E类型或者E的父类,成为下限。
 
 d 关于上限例子的部分代码
 public static void methed_1(Collection<? extends Person> t)//好处就是能够给泛型加一个范围,
 {
  Iterator<? extends Person> it=t.iterator();
  while(it.hasNext())
  {
   System.out.println(it.next().getAge()+"1");
  }
 } 

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值