Java---泛型讲解

文章目录

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


1. 泛型类

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

 2. 代码块举例:

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. 代码块举例:

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. 代码块举例:

public interface Generic <T>{void show(T t);
}public class GenericImp <T> implements Generic<T> {@Overridepublic 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. 类型通配符

在这里插入图片描述

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. 代码块举例:

public class Demo {public static void main(String[] args) {System.out.println(sum(10,20,30));//60System.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. 代码块举例:

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, 难学]}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/291511.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

modbus_tcp的实现 through python.

0.引言 当前科技似乎处于加速发展期&#xff0c;各个模块都在快速迭代&#xff0c;迭代的速度会让既有的一些经验产生问题&#xff0c;在用python实现modbus_tcp协议时&#xff0c;网上流传的一些代码中import语句会出现问题。导致pymodbus模块用起来很不好用。 这个原因出在…

深度学习 Day21——J1ResNet-50算法实战与解析

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 文章目录 前言一、我的环境二、代码实现与执行结果1.引入库2.设置GPU&#xff08;如果使用的是CPU可以忽略这步&#xff09;3.导入数据4.查…

vue element plus 管理系统路由菜单简要设计(后端获取菜单)

1 需求 管理系统“菜单”由后端接口返回&#xff0c;前端需要根据后端返回的“菜单”数组&#xff0c;构造路由&#xff0c;渲染侧栏菜单有些菜单是子菜单&#xff0c;有对应的路由&#xff0c;但是不在侧栏显示&#xff08;比如一些详情页面&#xff09; 注&#xff1a;这里的…

C++结合OpenCV:掌握图像基础与处理

本文详细介绍了使用 OpenCV4 进行图像处理的基础知识和操作。内容包括图像的基础概念、色彩空间理解、以及如何在 C 中进行图像读取、显示和基础操作。 1.图像的基本概念与术语 图像表示 在计算机视觉中&#xff0c;图像通常表示为一个二维或三维的数组。二维数组表示灰度图像&…

基于多反应堆的高并发服务器【C/C++/Reactor】(上)

&#xff08;一&#xff09;初始化服务器端用于监听的套接字 Server.h #pragma once // 初始化监听的套接字 int initListenFd(unsigned short port); Server.c int initListenFd(unsigned short port) {// 1.创建监听的fdint lfd socket(AF_INET, SOCK_STREAM, 0);if(lf…

opencv静态链接error LNK2019

opencv 3.1.0 静态库&#xff0c;包括以下文件 只链接opencv_world310d.lib&#xff0c;报错 opencv_world310d.lib(matrix.obj) : error LNK2019: 无法解析的外部符号 _ippicvsFlip_16u_I8&#xff0c;该符号在函数 "enum IppStatus (__stdcall*__cdecl cv::getFlipFu…

【项目问题解决】% sql注入问题

目录 【项目问题解决】% sql注入问题 1.问题描述2.问题原因3.解决思路4.解决方案1.前端限制传入特殊字符2.后端拦截特殊字符-正则表达式3.后端拦截特殊字符-拦截器 5.总结6.参考 文章所属专区 项目问题解决 1.问题描述 在处理接口入参的一些sql注入问题&#xff0c;虽然通过M…

一套rk3588 rtsp服务器推流的 github 方案及记录 -03(完结)

opencv 解码记录 解码库使用的时候发现瑞芯微以前做过解码库对ffmpeg和gstreamer的支持 然后最近实在不想再调试Rtsp浪费时间了&#xff0c;就从这中间找了一个比较快的方案 ffmpeg 带硬解码库编译 编译流程参考文献 https://blog.csdn.net/T__zxt/article/details/12342435…

Hbase的安装配置

注&#xff1a;本文默认已经完成hadoop的下载以及环境配置 1.上传zookeeper和hbase压缩包到指令路径并且解压 (理论上讲&#xff0c;hbase其实内置了zookeeper&#xff0c;我们也可以不另外下载&#xff0c;另外下载的目的在于减少组件间依赖性) cd /home mkir hbase cd /hom…

03-JVM对象创建与内存分配机制深度剖析

文章目录 对象的创建对象创建的主要流程一、类加载检查二、分配内存划分内存的方法解决并发问题的方法 三、初始化零值四、设置对象头五、执行<init>方法 对象半初始化对象大小与指针压缩什么是java对象的指针压缩&#xff1f;为什么要进行指针压缩&#xff1f; 对象内存…

大IP时代文旅品牌如何用数字人玩转数字营销?

在大IP时代&#xff0c;有IP意味着话题、人气、流量以及变现能力&#xff0c;文旅品牌如何打造一个成功的、受欢迎的IP&#xff0c;拓宽文旅资源价值&#xff0c;成为文旅品牌营销的一大痛点。随着元宇宙概念兴起&#xff0c;数字人IP可以满足文旅品牌多元化需求&#xff0c;文…

字节跳动 Spark Shuffle 大规模云原生化演进实践

Spark 是字节跳动内部使用广泛的计算引擎&#xff0c;已广泛应用于各种大规模数据处理、机器学习和大数据场景。目前中国区域内每天的任务数已经超过 150 万&#xff0c;每天的 Shuffle 读写数据量超过 500 PB。同时某些单个任务的 Shuffle 数据能够达到数百 TB 级别。 与此同…