Q:java中的泛型数组
对于java,其是不支持直接创建泛型数组的。当采用如下的方式去创建一个泛型数组时,其会出现错误,编译无法通过的情况。
package other.jdk1_5;
/**
* 该类用于演示泛型数组的创建
* @author 学徒
*
*/
public class Generics<T>
{
T[] a=new T[];
}
报错的信息:
Multiple markers at this line
- Cannot create a generic array of T
- Variable must provide either dimension expressions or an array
但是,在java中,其却可以创建泛型类型的数组变量,如下所示的代码,其并不会出现错误的情况。
package other.jdk1_5;
/**
* 该类用于演示泛型数组的创建
* @author 学徒
*
*/
public class Generics<T>
{
T[] a;
}
一个问题是,我们想要创建一个泛型类型的数组变量,那么应当怎么办?这里,可以通过反射的方式来进行解决。
示例代码如下:
package other.jdk1_5;
import java.lang.reflect.Array;
/**
* 该类用于演示泛型数组的创建
* @author 学徒
*
*/
public class Generics
{
/**
* 用于创建一个数据类型为T的泛型数组
* @param clazz 泛型类型的Class类
* @param length 数组的长度
* @return 泛型数组
*/
@SuppressWarnings("unchecked")
public static <T> T[] newArrayByArrayClass(Class<T[]> clazz,int length)
{
//class对象的getComponentType方法返回的是该class类对象所对应的元素类型
return (T[]) Array.newInstance(clazz.getComponentType(), length);
}
public static <T> T[] newArrayByClass(Class<T> clazz,int length)
{
return (T[])Array.newInstance(clazz, length);
}
public static void main(String[] args)
{
//通过泛型类型数组的class对象创建数组
String[] a=newArrayByArrayClass(String[].class,10);
//通过泛型类型的class对象创建数组
String[] b=newArrayByClass(String.class,10);
}
}
在《算法》第四版一书的第一章中,其在提到关于泛型的那部分内容时,有说到可用通过如下的代码的方式创建泛型数组
T[] a=(T[])new Object[cap];
显然,这段代码在编译器的检查中,会给出一条警告信息,虽然可以忽略它。但是,通过该方式生成的代码,在运行期间仍然会出现类型强转错误,因为对于该方式创建的泛型数组而言,其并非为运用了向下转型技术,因Object数组类型并非为任何数据类型的父类型。
Q:java中的泛型数组的更多相关文章
- Java中创建泛型数组
Java中创建泛型数组 使用泛型时,我想很多人肯定尝试过如下的代码,去创建一个泛型数组 T[] array = new T[]; 当我们写出这样的代码时编译器会报Cannot create a gen ...
- Java中的泛型 (上) - 基本概念和原理
本节我们主要来介绍泛型的基本概念和原理 后续章节我们会介绍各种容器类,容器类可以说是日常程序开发中天天用到的,没有容器类,难以想象能开发什么真正有用的程序.而容器类是基于泛型的,不理解泛型,我们就难以 ...
- Java 中的泛型详解-Java编程思想
Java中的泛型参考了C++的模板,Java的界限是Java泛型的局限. 2.简单泛型 促成泛型出现最引人注目的一个原因就是为了创造容器类. 首先看一个只能持有单个对象的类,这个类可以明确指定其持有的 ...
- 【Java入门提高篇】Day14 Java中的泛型初探
泛型是一个很有意思也很重要的概念,本篇将简单介绍Java中的泛型特性,主要从以下角度讲解: 1.什么是泛型. 2.如何使用泛型. 3.泛型的好处. 1.什么是泛型? 泛型,字面意思便是参数化类型,平时 ...
- Java开发知识之Java中的泛型
Java开发知识之Java中的泛型 一丶简介什么是泛型. 泛型就是指泛指任何数据类型. 就是把数据类型用泛型替代了. 这样是可以的. 二丶Java中的泛型 Java中,所有类的父类都是Object类. ...
- Java 中的泛型
泛型的一般意义: 泛型,又叫 参数多态或者类型参数多态.在强类型的编程语言中普遍作用是:加强编译时的类型安全(类型检查),以及减少类型转换的次数. Java 中的 泛型: 编译时进行 类型擦除 生成与 ...
- 第九节:详细讲解Java中的泛型,多线程,网络编程
前言 大家好,给大家带来详细讲解Java中的泛型,多线程,网络编程的概述,希望你们喜欢 泛型 泛型格式:ArrayList list= new ArrayList(); ArrayList list= ...
- Java基础之Java中的泛型
1.为什么要使用泛型 这里我们俩看一段代码; List list = new ArrayList(); list.add("CSDN_SEU_Cavin"); list.add(1 ...
- 夯实Java基础系列13:深入理解Java中的泛型
目录 泛型概述 一个栗子 特性 泛型的使用方式 泛型类 泛型接口 泛型通配符 泛型方法 泛型方法的基本用法 类中的泛型方法 泛型方法与可变参数 静态方法与泛型 泛型方法总结 泛型上下边界 泛型常见面试 ...
随机推荐
- canvas绘制五角星详细过程
canvas绘制 <canvas id="straight"></canvas> <script> var canvas = document. ...
- JMeterPlugin性能监控
GUI界面中的plugins manager中的jpgc-Standard set,其中共包含以下的文件: jpgc-dummy jpgc-fifo jpgc-graphs-basic jpgc-pe ...
- Jmeter使用吞吐量控制器实现不同的用户操纵不同的业务
一.需求 需求:博客系统,模拟用户真实行为,80%的用户阅读文章,20%的用户创建文章,创建文章的用户随机的删除或者修改文章. 二.脚本实现 80%的用户查看文章 20%用户创建文章 根据post_i ...
- 38.oracle开篇
先不聊技术,咱先闷骚一下.刚看完“解忧杂货店”的第二章“深夜的口琴声”,这一章勾起了我万千思绪,小说毕竟是小说,可能与现实不符,但能引发思考,反应一个普遍问题就是好小说.看到一半我还特意去酷狗上搜了一 ...
- 架构师养成记--17.disrunptor 多生产者多消费者
入口: import java.nio.ByteBuffer; import java.util.UUID; import java.util.concurrent.CountDownLatch; i ...
- [BZOJ 5323][Jxoi2018]游戏
传送门 \(\color{green}{solution}\) 它每次感染的人是它的倍数,那么我们只需要找出那些除了自己以外在\(l\), \(r\)内没有别的数是 它的约数的数,在这里称其为关键数. ...
- tp5.0 根据经纬度 获取附近信息
自己备注一下 /* *参数说明: *$lng 经度 *$lat 纬度 *$distance 周边半径 默认是500米(0.5Km) */ public function returnSquarePoi ...
- [Xamarin] 簡單實作ListActivity (转帖)
但是文中案例因為是用事先設好的Layout 但是如果需要被選擇的東西很多時該怎麼辦 我們討論一下,如何製作很簡單的List . 首先我們得先參考一下再android 思維下要製作一個List 需要的架 ...
- (转)Heartbeat+DRBD+MySQL高可用方案
原文:http://www.cnblogs.com/gomysql/p/3674030.html 1.方案简介 本方案采用Heartbeat双机热备软件来保证数据库的高稳定性和连续性,数据的一致性由D ...
- shell脚本杀进程重启
#!/bin/bash ID=`ps -ef | grep "abc" | grep -v "$0" | grep -v "grep" | ...