范型

it2022-05-09  27

集合中的范型

将对象的类型作为参数,指定到其他类或者方法上,从而保证类型转换的安全性和稳定性

简单的来说使用范型,表示集合只能用什么类型的集合;不使用范型的集合,可以装任何东西类型进去(并有黄色警告)

package com.cdz.fanxing; import java.util.ArrayList; public class FanXing { public static void main(String[] args) { ArrayList<String> list=new ArrayList<String>(); //只能为String类型的参数 //list.add(1);//参数不行 list.add("abc"); System.out.println(list); ArrayList lis=new ArrayList(); //不使用范型,开口较大,所以可以存任何类型的 lis.add(1);//参数不行 lis.add("abc"); System.out.println(lis); } }

下面两个典型泛型创建了一个Fan类

典型泛型集合ArrayList<E>

package com.cdz.fanxing; import java.util.ArrayList; public class FanXing { public static void main(String[] args) { Fan f=new Fan(); ArrayList<Fan> list1=new ArrayList<Fan>();//只能添加Fan类型,也证明了集合的作用:存储对象 list1.add(f); System.out.println(list1); } }

 

典型泛型集合HashMap<K,V>

package com.cdz.fanxing; import java.util.HashMap; public class FanXing { public static void main(String[] args) { HashMap<String,Fan> list2=new HashMap<String,Fan>(); list2.put("Name", f); System.out.println(list2); } }

泛型接口

泛型接口就是拥有一个或多个类型参数的接口

package com.cdz.fanxing; public interface FanJeiKou<T> { //接口成员 //1.常量 //2.抽象方法,这里的抽象方法abstract,可以省略 public T prin(T a); }

而范型接口中的类型交给实现类去实现

package com.cdz.fanxing; public class FanJeiKouImp implements FanJeiKou<String> { public String prin(String a){//重写了方法 return a; } }

 

泛型类

泛型类就是具有一个或者多个类型参数的类

例:

public class Student<T> { public T print(T x){ //方法体 } }

泛型类的继承

面向对象的特性同样适用于泛型类,所以泛型类也可以被继承

继承了泛型类的子类,必须也是泛型类

语法格式:

class 子类<T> extends 父类<T>  { }


最新回复(0)