Java---泛型讲解

文章目录

    • [1. 泛型类](#1. 泛型类)
    • [2. 泛型方法](#2. 泛型方法)
    • [3. 泛型接口](#3. 泛型接口)
    • [4. 类型通配符](#4. 类型通配符)
    • [5. 可变参数](#5. 可变参数)
    • [6. 可变参数的使用](#6. 可变参数的使用)

1. 泛型类

1. 格式:修饰符 class 类名 <类型>{ }。例如:public class Generic <T>{ }

2. 代码块举例:

java 复制代码
public class Generic <T>{
    private T t;

    public T getT() {
        return t;
    }

    public void setT(T t) {
        this.t = t;
    }
}

public class Demo {
    public static void main(String[] args) {
        Generic<String> g1=new Generic<String>();//第二个String可以不写
        g1.setT("张三");
        System.out.println(g1.getT());//张三

        Generic<Integer> g2=new Generic<>();
        g2.setT(18);
        System.out.println(g2.getT());//18
    }
}

2. 泛型方法

1. 格式:修饰符 <类型> 返回值类型 方法名(类型, 变量名){ }。例如:public <T> void show(T t){ }

2. 代码块举例:

java 复制代码
public class Generic{
    public <T> void show(T t){
        System.out.println(t);
    }
}

public class Demo {
    public static void main(String[] args) {
        Generic g=new Generic();
        g.show("张三");
        g.show(18);
        g.show(13.14);
    }
}

3. 泛型接口

1. 格式:修饰符 interface 接口名 <类型>{ }。例如:public interface Generic<T>{ }

2. 代码块举例:

java 复制代码
public interface Generic <T>{
    void show(T t);
}

public class GenericImp <T> implements Generic<T> {
    @Override
    public void show(T t) {
        System.out.println(t);
    }
}

public class Demo {
    public static void main(String[] args) {
        Generic<String> g1=new GenericImp();
        g1.show("张三");

        Generic<Integer> g2=new GenericImp();
        g2.show(18);
    }
}

4. 类型通配符

java 复制代码
import java.util.ArrayList;
import java.util.List;

public class Demo {
    public static void main(String[] args) {
        List<?> list1=new ArrayList<Object>();
        List<?> list2=new ArrayList<Number>();
        List<?> list3=new ArrayList<Integer>();

        List<? extends Number> list4=new ArrayList<Number>();
        List<? extends Number> list5=new ArrayList<Integer>();

        List<? super Number> list6=new ArrayList<Number>();
        List<? super Number> list7=new ArrayList<Object>();
    }
}

5. 可变参数

注:先看看比较差的效果

1. 可变参数:又称参数个数可变,用作方法的形参出现,那么方法的参数个数就是可变的了。

2. 格式:修饰符 返回值类型 方法名(数据类型... 变量名){ }。例如:public static int sum(int... a){ }

3. 代码块举例:

java 复制代码
public class Demo {
    public static void main(String[] args) {
        System.out.println(sum(10,20,30));//60
        System.out.println(sum(10,20,30,40));//100
    }
    public static int sum(int... a){
        int sum=0;
        for(int i : a){
            sum+=i;
        }
        return sum;
    }
}

6. 可变参数的使用

1. Arrays工具类中有一个静态成员方法:Arrays.asList(),返回由指定数组支持的固定大小的列表。

2. 代码块举例:

java 复制代码
import java.util.Arrays;
import java.util.List;

public class Demo {
    public static void main(String[] args) {
        List<String> list1= Arrays.asList("hello","Java","难学");
        //list.add("wordld");会报错的
        //list.remove("wordld");会报错的
        //list.set();不报错
        System.out.println(list1);//[hello, Java, 难学]
    }
}
相关推荐
绿油果2 小时前
Javaweb(BeanUtils)
java·web
一念&2 小时前
每日一个C语言知识:C 数据类型
c语言·开发语言
拧之3 小时前
✅XXL-JOB的基本使用
java
迈火3 小时前
PuLID_ComfyUI:ComfyUI中的图像生成强化插件
开发语言·人工智能·python·深度学习·计算机视觉·stable diffusion·语音识别
wzg20163 小时前
vscode 配置使用pyqt5
开发语言·数据库·qt
老朋友此林4 小时前
MongoDB GEO 项目场景 ms-scope 实战
java·数据库·spring boot·mongodb
板鸭〈小号〉5 小时前
Socket网络编程(1)——Echo Server
开发语言·网络·php
明天会有多晴朗5 小时前
C语言入门教程(第1讲):最通俗的C语言常见概念详解与实战讲解
c语言·开发语言·c++
爱上妖精的尾巴5 小时前
5-20 WPS JS宏 every与some数组的[与或]迭代(数组的逻辑判断)
开发语言·前端·javascript·wps·js宏·jsa
gopher95115 小时前
Go 语言的 panic 和 recover
开发语言·golang