java泛型使用

目录

  • 一、Java泛型是什么?
  • 二、泛型使用
    • 1.定义泛型类
    • 2.泛型方法
    • 3.泛型接口
    • 4.通配符上界
    • 5.通配符下界
    • 6.无界通配符

一、Java泛型是什么?

Java泛型是一种非常重要的特性,它可以使我们在编写Java代码时更为灵活,同时也可以提高代码的可读性和可维护性。在本文中,我们将介绍如何使用Java泛型,包括如何定义泛型类、泛型方法、泛型接口以及如何使用通配符和类型参数等。

二、泛型使用

1.定义泛型类

定义泛型类的方式很简单,只需要在类名后面加上一对尖括号,然后指定泛型类型即可。

public class Demo6_generic {
    public static void main(String[] args){
        //加了泛型只能添加对应的类型,安全
        Tool<String> t = new Tool<>();
        t.set("heo");
        System.out.println(t.get());
    }
}
class Tool<T>{
    private T q;
    public void set(T q){
        this.q = q;
    }
    public T get()
    {
        return q;
    }

}

2.泛型方法

定义泛型方法的方式与定义泛型类类似,只需要在方法名前面加上一对尖括号,然后指定泛型类型即可。

class Tool<T>{
    private T q;
    public void set(T q){
        this.q = q;
    }
    public T get()
    {
        return q;
    }
    //泛型方法,返回值类型是K
    public static <K> K demo1(K value){
        K val = value;
        return val;
    }
}

3.泛型接口

泛型接口和泛型类的定义很相似

public interface Inter<T> {
    public void show(T t);
    //泛型接口方法
    public <K> K display(K value);
}

4.通配符上界

<? extends T>,在类型参数中使用 extends 表示这个泛型中的参数必须是 E 或者 E 的子类

public class Demo7_generic {
    public static void main(String[] args){
        //高级泛型,?代表任意类型,? extends E:父类是E ,?是子类
        List<Father> fathers = new ArrayList<>();
        List<Son> sons = new ArrayList<>();
        demo3.test(fathers);
        demo3.test(sons);
    }
}
class demo3{
    public static <T> void test(List<? extends Father> list){
        System.out.println(list);
    }
}
class Father{ }
class Son extends Father{}

5.通配符下界

public class Demo7_generic {
    public static void main(String[] args){
        //高级泛型,?代表任意类型,? extends E:父类是E ,?是子类
        List<Father> fathers = new ArrayList<>();
        List<Son> sons = new ArrayList<>();
        demo3.test(fathers);
        demo3.test(sons);
    }
}
class demo3{
    public static <T> void test(List<? super Father> list){
        System.out.println(list);
    }
}
class Father{ }
class Son extends Father{}

6.无界通配符

,即类型参数可以是任何类型

无边界的通配符的主要作用就是让泛型能够接受未知类型的数据

public static void main(String[] args) {
    List<Integer> arrays = Arrays.asList(1, 1, 1);
    List<String> arrayString = Arrays.asList("1", "1", "1");
    printList(arrays);
    printList(arrayString);

}

public static void printList(List<?> list) {
    for (Object elem : list) {
        System.out.print(elem + "");
    }
    System.out.println();
}

你可能感兴趣的:(Java基础,java,泛型)