传智播客学习总结---泛型

泛型(generic):

    泛型是JDK1.5版本推出一个安全机制。泛型的本质是参数化类型。早期程序设计为程序扩展性,一般使用Object来实现参数传递的任意化,但是需要进行强制类型转换,这种转换是在对传递的参数类型已知的情况下进行的,如果强制转换类型错误,在编译时期是没有问题的,但是在运行时期会出现ClassCastException异常,这就产生了安全隐患。泛型的好处就是将运行时期出现的问题ClassCastException转移到了编译时期,避免了类型强转的麻烦。
    泛型可以在接口、类、方法中使用,分别是泛型接口、泛型类、泛型方法。可以将要操作的引用类型作为参数传递到<>中,当类或接口中操作的引用数据类型不确定的时候使用,而方法操作的引用类型不确定而且每个方法操作的类型可能不一致,这是就要将泛型定义在方法上,需要注意的是必须定义在返回值类型前面,通常在静态函数中使用。泛型的参数可以为多个,还可以使用extends语句和通配符,但是使用的情况不多,例如<? extends K>可以接收K类型的对象或者K类型的子类对象<? super K>可以接收K类型的对象或者K类型的父类对象。

例:

import java.util.*;
public class TestGeneric {
 public static void main(String[] args) {
  ArrayList<String> al = new ArrayList<String>();
  al.add("df");
  al.add("qwee");
  //al.add(18);  通过泛型规定只能添加String类型的元素,这样添加Integer类型会报错
  al.add("abc");
  for(Iterator<String> it = al.iterator();it.hasNext();){
   String str = it.next(); //不使用泛型需要写为String str = (String)(it.next());
   System.out.println(str);
   System.out.println(str.length());
  }


  PP<Man> p = new PP<Man>();
  p.sett(new Man()); //因为指定了泛型,往里面传其他类型对象会报错,没泛型之前只会在编译时期报错
  Man m = p.gett();
  m.work();
 }
}


class PP<T>
{
 private T t;
 public void sett(T t)
 {
  this.t = t;
 }
 public T gett()
 {
  return t;
 }
}


class Man{

 public void work(){
  System.out.println("man work");
 }
}


class Women{
 public void work(){
  System.out.println("Women work");
 }
}

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值