一,泛型
泛型,即“参数化类型”,也就是说操作的数据类型被指定为一个参数
就类似于函数的形参定义了之后,在函数里给它赋值的数据类型不一致就不能通过编译
泛型就是为了把数据类型问题发现在运行之前(无法通过编译)
这种参数类型可以用在类、方法、接口中分别被称为泛型类、泛型方法、泛型接口
泛型可以指定多种类型:<泛型1,泛型2......>
二,泛型类
类似于把泛型传进该类中,从而使里面的参数只能赋值为该类型
定义格式
public class 类名<T>(可写别的,类似于形参){}
小小的尝试一下泛型类
泛型类StringAndInt
//T类似于形参,接收传过来的泛型(参数化类型,相当于传过来一个参数)
public class StringAndInt<T> {
// 为了方便设成public,如果正常用public可以不写get\set方法
public T t;
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
}
测试类
public class test {
public static void main(String[] args) {
// <String>给StringAndInt类传了个参数,限定一以后sai只能set类型String的
// 如果不向StringAndInt类传参就不知道限定什么类型的,也就是set什么类型的都可以,失去了正常作用
StringAndInt<String> sai1=new StringAndInt<String>();
// sai1.setT(123);
// System.out.println(sai.getT());
sai1.setT("加上泛型");
System.out.println(sai1.getT());
System.out.println("-------------");
StringAndInt sai2=new StringAndInt();
sai2.setT("不加泛型");
System.out.println(sai2.getT());
sai2.setT(123);
System.out.println("不加泛型:"+sai2.getT());
}
}
结果
注意泛型类也是个类,跟之前类的用法差不多
三,泛型接口
定义格式:
修饰符 interface 接口名<类型>{}如:public interface Animal<T>{}
泛型接口也是接口需要一个实现类,实现类需要重写接口的方法
今天任务有点多,划划水