Type Java类型
参考:https://blog.csdn.net/a327369238/article/details/52621043
Type —— Java类型
Type是一个空接口,所有类型的公共接口(父接口),其意义表示Java所有类型,这里所谓的类型是从Java整个语言角度来看的,比如原始类型、参数化类型(泛型)、类型变量及其数组等,可以理解为,Class(类)是Java对现实对象的抽象,而Type是对Java语言对象的抽象。
Type的子孙
概述
注意区分类型(Type)与类(Class)的区别,这里Class是Type的一种,而像数组、枚举等“类型”是相对于Class来说。
@org.junit.Test
public void test5() throws NoSuchMethodException {
String[] s=new String[]{"1"};
Class<? extends String[]> aClass1 = s.getClass();
if (String[].class.isAssignableFrom(aClass1)){
System.out.println(11111);
}
Class<? extends DeleteFlagEnum> aClass2 = DeleteFlagEnum.DELETE.getClass();
if (Enum.class.isAssignableFrom(aClass2)){
System.out.println(2222);
}
//从下面方法可以看出,具体的枚举类,是Enum的子类
//DeleteFlagEnum的父类是Enum
s.getClass().isEnum();
}
Type的直接子接口
1.ParameterizedType: 表示一种参数化的类型,比如Collection,即普通的泛型。
2.TypeVariable:是各种类型变量的公共父接口,就是泛型里面的类似T、E。
3.GenericArrayType:表示一种元素类型是参数化类型或者类型变量的数组类型,比如List<>[],T[]这种。
4.WildcardType:代表一种通配符类型表达式,类似? super T这样的通配符表达式。
Type的直接子类
Type的直接子类只有一个,也就是Class,代表着类型中的原始类型以及基本类型。关于Class详见:Class —— 反射基石。
Type子接口解析
1.ParameterizedType
参数化类型,即泛型,类似List<T>、Map<Integer, String>、List<? extends Number>带有类型参数的类型,当然,也可以是自定义的,再调用getRawType()与getActualTypeArguments()两个方法,就可以得到声明此参数化类型的类(java.lang.Comparable)和实际的类型参数数组([? super T]),而这个? super T又是一个WildcardType类型。
ParameterizedType详见:Java类型之参数化类型。
2.TypeVariable
类型变量,如参数化类型中的E、K等类型变量,表示泛指任何类,如果加上extends/super限定,则就会有相应的上限、下限。
TypeVariable详见:Java类型之类型变量。
3.GenericArrayType
泛型数组,表示上面两种的数组类型,即形如:A<T>[],T[][]类型。
GenericArrayType详见:Java类型之泛型数组。
4.WildcardType
通配符表达式,或泛型表达式,它虽然是Type的一个子接口,但并不是Java类型中的一种,表示的仅仅是类似 ? extends T、? super K这样的通配符表达式。
WildcardType详见:Java类型之泛型表达式。
Java类型分类
Java的所有类型包括:
1. raw type:原始类型,对应Class
2. parameterized types:参数化类型,对应ParameterizedType
3. array types:数组类型,对应GenericArrayType
4. type variables:类型变量,对应TypeVariable
5. primitive types:基本类型,仍然对应Class
1). 1中的Class,不仅仅指平常所指的类,还包括数组、接口、注解、枚举等结构。
2). 3中的数组类型GenericArrayType,应该指的是2、4类型数组,而不是一般我们说的数组,我们一般所说的数组是指1、5类型数组,他们还是1,也就是Class类型。
3). List<T ? entends>[]:这里的List就是ParameterizedType,T就是TypeVariable,T ? entends就是WildcardType(注意,WildcardType不是Java类型,而是一个表达式),整个List<T ? entends>[]就是GenericArrayType。
Type Java类型的更多相关文章
- 【spring boot】spring boot 前台GET请求,传递时间类型的字符串,后台无法解析,报错:Failed to convert from type [java.lang.String] to type [java.util.Date]
spring boot 前台GET请求,传递时间类型的字符串,后台无法解析,报错:Failed to convert from type [java.lang.String] to type [jav ...
- 【spring mvc】后台API查询接口,get请求,后台Date字段接收前台String类型的时间,报错default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'createDate';
后台API查询接口,get请求,后台Date字段接收前台String类型的时间筛选条件 后台接口接收 使用的实体 而createDate字段在后台实体中是Date类型 报错信息: org.spring ...
- 前台传参数时间类型不匹配:type 'java.lang.String' to required type 'java.util.Date' for property 'createDate'
springMVC action接收参数: org.springframework.validation.BindException: org.springframework.validation.B ...
- 解决本机安装多版本jdk导致The type java.lang.Object cannot be resolved It is indirectly referenced ...
本机开始安装了jdk1.6,然后安装了jdk1.8 当在调自动化的时候,发现传入函数传参String类型,报错The type java.lang.Object cannot be resolved ...
- Spring 整合 Flex (BlazeDS)无法从as对象 到 Java对象转换的异常:org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.util.Date' to required type 'java.sql.Timestamp' for property 'wfsj'; nested exception is java.lang.Ill
异常信息如下: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value ...
- hive复杂类型与java类型的对应
因为要往自定义的UDF传入复杂类型,所以需要对于这块的对应简单做一下总结 string java.lang.String, org.apache.hadoop.io.Text int int, jav ...
- [原创]java WEB学习笔记81:Hibernate学习之路--- 对象关系映射文件(.hbm.xml):hibernate-mapping 节点,class节点,id节点(主键生成策略),property节点,在hibernate 中 java类型 与sql类型之间的对应关系,Java 时间和日期类型的映射,Java 大对象类型 的 映射 (了解),映射组成关系
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- spring mvc出现 Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'endtime'
在使用spring mvc中,绑定页面传递时间字符串数据给Date类型是出错: Failed to convert property value of type [java.lang.String] ...
- Java JDBC中,MySQL字段类型到JAVA类型的转换
1. 概述 在使用Java JDBC时,你是否有过这样的疑问:MySQL里的数据类型到底该选择哪种Java类型与之对应?本篇将为你揭开这个答案. 2. 类型映射 java.sql.Types定义了常 ...
随机推荐
- Java枚举类型的使用,数值的二进制表示
一.Java枚举类型的使用 首先请看这段代码: package java上课; public class EnumTest { public static void main(String[] arg ...
- C编译过程
system()调用系统命令 C语言源代码——> 预编译(1.去掉注释:2.包含文件)——> gcc -o a.o a.c 编译(编译成二进制质量)——> 链接系统库函数——> ...
- 二分-A - Cable master
A - Cable master Inhabitants of the Wonderland have decided to hold a regional programming contest. ...
- C# 读取webConfig配置
获取百度URL var url = System.Configuration.ConfigurationManager.AppSettings["BaiduUrl"]; < ...
- 【数据结构】【C++】堆栈的实现与应用
堆栈(Stack) 参考浙大版<数据结构(第2版)> 堆栈可以认为是具有一定约束的线性表,插入和删除的操作都在栈顶的位置,先进入的元素将在后进入的元素之后取出,与生活中的桶类似,故又称为后 ...
- 三、linux环境的搭建1(oracle、ssh、jdk、mysql、samba、tomcat)
linux环境的搭建1(oracle.ssh.jdk.mysql.samba.tomcat) 网络配置 方案一 tip 1 使用ifconfig : ifconfig eth0 新ip 然后编辑/ ...
- restful设计参考
https://www.cnblogs.com/pyspark/p/8599210.html 以下查阅多处文档,思考总结: 所谓restful规范代表一种理想状态,首先对此种规范表示赞同,但应不忘实事 ...
- 题解【洛谷P3958】[NOIP2017]奶酪
题面 题解 我们考虑使用一个并查集维护空洞之间的关系. 如果两个空洞能相互到达,那么它们的祖先也是相同的. 枚举从哪一个空洞开始,能否到达奶酪的上表面. 如果能到达就输出Yes,否则输出No. 注意开 ...
- 【Python】循环的拓展
- K-means VS K-NN and 手肘法
1. The difference between classification and clustering. from here. Classification: supervised learn ...