6.0、Java泛型 - 泛型与数组
2023-04-18 16:49:32 时间
6.0、Java泛型 - 泛型与数组
泛型数组的创建 - 情况一:
可以声明带泛型的数组引用,但是不能直接创建带泛型的数组对象;
例如 ->
ArrayList<String>[] listArr = new ArrayList<String>[5];
可以声明 ArrayList<String>[ ] listArr 这样是没有问题的;但是直接创建带泛型的数组对象 -> new ArrayList<String>[5] 是不允许的;
如何解决 ->
我们可以声明带泛型的数组引用,然后用不带泛型的普通类型去创建数组对象,如下所示 ->
ArrayList<String>[] listArr = new ArrayList[5];
泛型数组的创建 - 情况二:
可以通过 java.lang.reflect.Array 的 newInstance(Class<T> , int) 创建 T [ ] 数组;
先来看一个错误案例 ->
public class Fruit<T> {
private T[] array = new T[3];
}
[ 很明显这是错误的,因为我们连 T 的类型都不知道,怎么可能去用 T 创建对象呢? ]
正确范例如下所示 ->
1 . 先声明一个数组引用 array,但是不创建对象;
2 . 然后通过构造方法创建数组对象;
public class Fruit<T> {
private T[] array;
//构造方法
public Fruit(Class<T> clz , int length) {//传入参数时假设指定数组类型为String则clz就是String.class
//通过Array.newInstance
array = (T[])Array.newInstance(clz , length);
}
}
相关文章
- Java多线程之wait(),notify(),notifyAll()
- javaEE是什么
- java关键字是什么
- java编译命令是什么
- java 自定义表单 挂靠流程 模块设计方案
- linux配置java环境变量
- java怎么从键盘输入一个数
- 初学Tips - 为啥Flink的Java模块需要Scala的版本后缀
- T资讯 | 一亿多条仇恨言论喂养出有史以来最邪恶的AI、360企业安全云或将上线“一键强制下班”功能、C++即将超越Java
- 三种方法+三种选型,用分布式锁还怕啥并发问题呀?
- Java 技术篇 - java同时连接多种数据库执行sql语句的兼容性验证,数据库类型包括:oracle、sqlserver、DB2、人大金仓、达梦、PG、瀚高、polardb
- Java 技术篇 - 前端浏览器发送一次url请求后端ServerSocket接收到两次请求原因及解决方法,GET /favicon.ico HTTP/1.1问题处理
- Java 技术篇 - ServerSocket接收http的url请求中包含中文的处理方法,URLDecode与URLEncode,url解码与编码
- Java 技术篇 - 通过exe4j打包后的程序运行过程中出现中文乱码问题解决
- Java 技术篇 - 从指定的web网页页面中读取html内容实例演示,从http协议下的url地址中读取web页面内容方法
- Java 技术篇 - 启动web服务接收浏览器请求并响应实例演示,解决socket响应浏览器显示中文乱码问题,web服务response响应设置浏览器显示字体方法
- Java 技术篇 - 连接oracle数据库执行sql使用close()关闭createStatement()无效无法清除游标缓存问题解决,报“ORA-01000: 超出打开游标的最大数“错误解决方法
- Java 技术篇-使用poi开源jar包实现读取excel实例演示,poi-3.17.jar获取
- Java 技术篇-linux系统下安装jdk、设置java环境变量实例演示
- Java 技术篇-利用ClipboardOwner实现实时监听剪切板功能实例演示