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

java创建泛型数组

java创建泛型数组

https://www.cnblogs.com/Hdaydayup/p/7472674.html

java中创建泛型数组并不是不可能,创建泛型数组通过反射,给构造函数传递两个参数,一个类型标记,一个数组大小。‘

 

简单Demo如下:

复制代码

import java.lang.reflect.Array;

/**
 * 创建泛型数组
 * @author hetiantian
 */
public class GenericArrayWithTypeToken<T> {
    private T[] array;

    public GenericArrayWithTypeToken(Class<T> type, int size) {
        array = (T[]) Array.newInstance(type, size);
    }

    public static void main(String[] args) {
        GenericArrayWithTypeToken<House> g = new GenericArrayWithTypeToken<>(House.class, 10);
        System.out.println(g.array.getClass().getSimpleName());
        System.out.println(g.array.length);
    }
}

复制代码

 

 

运行结果:

House[]
10

 

从结果来看,成功创建了所想要的数组类型,传递类型参数到构造器中是为了从擦除中恢复

 

错误的创建方式:

复制代码

/**
 * 创建泛型数组
 * @author hetiantian
 */
public class GenericArrayWithTypeToken<T> {
    private T[] array;

    public GenericArrayWithTypeToken(int size) {
        array = (T[]) new Object[size];  
    }

    public static void main(String[] args) {
        GenericArrayWithTypeToken<House> g = new GenericArrayWithTypeToken<>( 10);
        System.out.println(g.array.getClass().getSimpleName());
        System.out.println(g.array.length);
    }
}

复制代码

数组需要确定的类型,这个Demo中的构造函数相当于T[] array = new T[size]程序运行将会出错

 

 

 

 

相关文章:

  • Android Studio 代码格式化自动换行问题(强迫症)
  • wwise eventid soundbank
  • 简便快捷:如何在Wwise中管理您的SoundBanks
  • Unity项目接入Wwise
  • 资源几点想法
  • 【Unity3D Editor】导入图片自动转换成Sprite
  • Unity5.x版本项目中删除Library目录后重新打包AssetBundle时,MD5会莫名其妙的变化,何解?
  • unity assetBundle更新 打包变化
  • Unity 打包AssetBundle文件的MD5值变化问题
  • Unity3D资源管理——Unity2017 Assetbundle依赖打包
  • AssetBundle粒度与分配策略剖析
  • Unity Prerfab 环形依赖
  • Unity3D研究院之查找资源被哪里引用了
  • Unity VS 暂挂程序
  • xlua扩展第三方库记录
  • 【个人向】《HTTP图解》阅后小结
  • CAP理论的例子讲解
  • ES6语法详解(一)
  • Magento 1.x 中文订单打印乱码
  • magento 货币换算
  • mongodb--安装和初步使用教程
  • MySQL数据库运维之数据恢复
  • php ci框架整合银盛支付
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 成为一名优秀的Developer的书单
  • 初识 beanstalkd
  • 分布式任务队列Celery
  • 机器学习学习笔记一
  • 试着探索高并发下的系统架构面貌
  • 微服务入门【系列视频课程】
  •  一套莫尔斯电报听写、翻译系统
  • 智能网联汽车信息安全
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #LLM入门|Prompt#3.3_存储_Memory
  • #NOIP 2014#Day.2 T3 解方程
  • #stm32整理(一)flash读写
  • (1)常见O(n^2)排序算法解析
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (强烈推荐)移动端音视频从零到上手(下)
  • (五)c52学习之旅-静态数码管
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)jQuery 基础
  • (转)VC++中ondraw在什么时候调用的
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .net 怎么循环得到数组里的值_关于js数组
  • .net操作Excel出错解决
  • @NestedConfigurationProperty 注解用法