JAVA单排日记-2019/12/23-2-泛型

定义

泛型:未知的数据类型,不知道使用什么数据类型时可以使用泛型;也可以将泛型看成是一个变量,用来接收数据类型
在这里插入图片描述

使用

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("字符串");
    }
}

在这里插入图片描述

发布了90 篇原创文章 · 获赞 1 · 访问量 2063

猜你喜欢

转载自blog.csdn.net/wangzilong1995/article/details/103671958