泛型
泛型的概念:泛型就是将类型作为一种参数进行指定。
例如下面代码:
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);
}
}
浙公网安备 33010602011771号