定义
泛型:未知的数据类型,不知道使用什么数据类型时可以使用泛型;也可以将泛型看成是一个变量,用来接收数据类型
使用
1.定义含有泛型的类
定义一个类,其中的数据类型全用泛型
普通的类:
public class GenericClass {
public String a;
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
}
public class DemoGeneric {
public static void main(String[] args) {
GenericClass gen = new GenericClass();
gen.setA("只能是字符串");
System.out.println(gen.getA());
}
}
含有泛型的类:
public class EClass<E> {
public E a;
public E getA() {
return a;
}
public void setA(E a) {
this.a = a;
}
}
public class DemoEClass {
public static void main(String[] args) {
EClass e = new EClass();//默认是Object类型
e.setA(123);
System.out.println(e.getA());
e.setA("字符串");
System.out.println(e.getA());
EClass<Integer> e2 = new EClass<>();//可以定义类型
e2.setA(123);
System.out.println(e.getA());
}
}
2.定义含有泛型的方法
- 格式:
修饰符 <泛型> 返回值类型 方法名称(参数列(使用泛型)){
方法体;
}
public <M> void method01(M m){
System.out.println(m);
}
例子01:含有泛型的类方法
创建类,添加含有泛型的方法
public class MClass {
public <M> void method01(M m){
System.out.println(m);
}
}
调用
public class DmeoMethod {
public static void main(String[] args) {
MClass me = new MClass();
me.method01(123);
me.method01("asd");
}
}
例子02:含有泛型的静态方法
public class MClass {
public static <S> void method02(S s){
System.out.println(s);
}
}
public class DmeoMethod {
public static void main(String[] args) {
MClass.method02(123);
MClass.method02("qwe");
}
}
3.定义含有泛型的接口
法1:接口使用泛型,实现类定义数据类型
接口使用泛型
public interface EInterface <I> {
public abstract void method01(I i);
}
实现类定义数据类型
public class EInterfaceImpl01 implements EInterface<String> {
@Override
public void method01(String s) {
System.out.println(s);
}
}
法2:接口使用泛型,实现类使用泛型,创建对象时定义数据类型
public interface EInterface <I> {
public abstract void method01(I i);
}
public class EInterfaceImpl01<I> implements EInterface<I> {
@Override
public void method01(I i) {
System.out.println(i);
}
}
public class DemoI {
public static void main(String[] args) {
EInterfaceImpl01<String> str = new EInterfaceImpl01<>();
str.method01("字符串");
}
}