当前位置: 首页 > news >正文

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.lryc.cn/news/268713.html

相关文章:

  • 【论文阅读笔记】SegVol: Universal and Interactive Volumetric Medical Image Segmentation
  • Unix/Linux操作系统介绍
  • 什么是https证书?
  • C++ DAY2作业
  • RabbitMQ核心概念记录
  • 算法时间空间复杂度计算—空间复杂度
  • 计算机专业校招常见面试题目总结
  • 网络编程『简易TCP网络程序』
  • java itext5 生成PDF并填充数据导出
  • 如何配置TLSv1.2版本的ssl
  • 在CentOS 7上使用普通用户`minio`安装和配置MinIO
  • Vue3-27-路由-路径参数的简单使用
  • w7数据库基础之mysql函数
  • 智能优化算法应用:基于人工蜂鸟算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • Docker的基础使用
  • Sass(Scss)、Less的区别与选择 + 基本使用
  • GPT Zero 是什么?
  • c++学习笔记-提高篇-案例2-员工分组(vector/multimap)
  • TrustZone之问答
  • vue3中新增的组合式API:ref、reactive、toRefs、computed、watch、provide/inject、$ref
  • Flask 密码重设系统
  • HarmonyOS4.0开发应用(四)【ArkUI状态管理】
  • JS常见正则表达式写法(附案例)
  • go语言,ent库与gorm库,插入一条null值的time数据
  • Java EasyExcel 导入代码
  • 2024,5G-A风起,中兴通讯破浪
  • SuperMap Hi-Fi 3D SDK for Unity矢量面贴地贴模型
  • 【DB2】Maxlocks和防止锁升级
  • 网工内推 | 网络服务工程师,HCIE认证优先,带薪年假,年终奖
  • ​TrustZone之可信固件