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, 难学]
    }
}
相关推荐
安卓开发者6 分钟前
第4讲:理解Flutter的灵魂 - “Everything is a Widget”
开发语言·javascript·flutter
再睡一夏就好10 分钟前
【C++闯关笔记】使用红黑树简单模拟实现map与set
java·c语言·数据结构·c++·笔记·语法·1024程序员节
oak隔壁找我42 分钟前
ShardingJdbc配置说明
java·后端
lzjava20241 小时前
Spring AI实现一个智能客服
java·人工智能·spring
Mos_x1 小时前
HeidiSQL导入与导出数据
java·后端
oak隔壁找我2 小时前
Elasticsearch QueryBuilders 高级使用案例
java·后端
青云交2 小时前
Java 大视界 -- Java 大数据在智能家居能源消耗模式分析与节能策略制定中的应用
java·大数据·智能家居·数据采集·能源消耗模式分析·节能策略制定·节能效果评估
小龙报2 小时前
《算法通关指南:数据结构和算法篇 --- 顺序表相关算法题》--- 询问学号,寄包柜,合并两个有序数组
c语言·开发语言·数据结构·c++·算法·学习方法·visual studio
Zhang青山2 小时前
【玩转全栈】----Django基本配置和介绍
java·后端
数据知道2 小时前
Go语言设计模式:工厂模式详解
开发语言·设计模式·golang·go语言·工厂模式