泛型

Posted on 2013-04-11 08:01  我是王琦  阅读(179)  评论(0)    收藏  举报

 

泛型
泛型的概念:泛型就是将类型作为一种参数进行指定。

例如下面代码:
List mylist=new ArrayList();

mylist.add(new Integer(10));

mylist.add("aslfd");
Integer num=(Integer)mylist.get(0);
String str=(String)mylist.get(1);
在上面的例子中没有使用泛型,集合中可以存放任何类型的元素。
但是这样不太好,我们一般把相同类型的元素装入一个集合。
在取出元素时,需要对元素进行强制转化,否则将会出错,因为集合并不知道取出的是什么类型的元素。
所以就有了泛型将类型作为一种参数进行指定。
格式如下:
List<Integer> mylist=new ArrayList<Integer>();
在集合的后面加上<参数类型>,这样集合中就只能装指定的类型元素。
mylist.add(new Integer(9));

int num= mylist.get(0);
获取元素时不需要进行强制转换,因为指定了数据类型。


自定义泛型类

格式:
class 类名<类型变量>
{
 实体
}
对于<>里的类型变量可以使用任何符合java命名规范的标示符,一般都在其中使用大写的字母
例如使用E来表示集合元素的类型,K和V表示元素的键值对中的键和值得类型,T,U,S表示任意类型。
泛型变量可以有多个,多个类型变量用“,”隔开

class MyValue<T,U>
{
 //定义两个由类型变量指定类型的成员变量。
 private T vlaue1;
 private U vlaue2;
 //定义两个成员方法
 public void setValue(T value1,U value2)
 {
  this.value1=value1;
  this.value2=value2;
 }
 //设置get方法
 public U getValue2()
 {
  return value2;
 }
 public T getValue1()
 {
  return value1;
 }
 public class MyValueTest
 {
  public static void main(String[] args)
  {
   //创建自定义的泛型类型对象,并且指定两个类型变量。
   MyValue<String,Integer> mv1=new MyValue<String,Integer>();
   mv1.setValue("该参数为字符串类型",new Integer(10));
   //返回成员变量
   String value1=mv1.getValue1();
   Integer value2=mv1.getValue2();
   //打印结果
   System.out.println("str1="+value1+"\nnum="+value2);

  }
 }
}
黑马程序员
自定义泛型方法
class FFTest
{
 //自定义泛型方法
 public static <T> T getLast(T[] a)
 {
  //返回指定数组的最后一个元素
  return a[a.length-1];

 }
 public static void main(String[] args)
 {
  //创建字符串类型型的数组。
  String[] strs={"第一个元素","第二个元素","第三个元素"};

  //使用泛型方法并对其进行指定类型参数
  String laststr=FFTest.<String>getLast(strs);
  //打印结果
  System.out.println("数组strs中的最后一个元素是:"+laststr);
  
 }
}

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3