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, 难学]
    }
}
相关推荐
PythonFun17 分钟前
Python批量下载PPT模块并实现自动解压
开发语言·python·powerpoint
Death20021 分钟前
Qt 6 相比 Qt 5 的主要提升与更新
开发语言·c++·qt·交互·数据可视化
机器视觉知识推荐、就业指导24 分钟前
使用Qt实现实时数据动态绘制的折线图示例
开发语言·qt
快乐就好ya1 小时前
Java多线程
java·开发语言
IT学长编程1 小时前
计算机毕业设计 二手图书交易系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·课程设计·毕业论文·计算机毕业设计选题·二手图书交易系统
CS_GaoMing2 小时前
Centos7 JDK 多版本管理与 Maven 构建问题和注意!
java·开发语言·maven·centos7·java多版本
艾伦~耶格尔2 小时前
Spring Boot 三层架构开发模式入门
java·spring boot·后端·架构·三层架构
man20172 小时前
基于spring boot的篮球论坛系统
java·spring boot·后端
2401_858120533 小时前
Spring Boot框架下的大学生就业招聘平台
java·开发语言
S hh3 小时前
【Linux】进程地址空间
java·linux·运维·服务器·学习