凉山州建设局网站wordpress 封面图像
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:29
当前位置: 首页 > news >正文
凉山州建设局网站,wordpress 封面图像,广州十大电商公司,如何查网站外链文章目录Type简介Type分类1. 原始类型(Class)2. 参数化类型(ParameterizedType)3. 类型变量(TypeVariable)4. 通配符类型(WildcardType)5. 泛型数组类型(GenericArrayType)Type简介 Type是Java编程语言中所有类型的公共高级接口。它们包括原始类型、参数化类型、数组类型、类型… 文章目录Type简介Type分类1. 原始类型(Class)2. 参数化类型(ParameterizedType)3. 类型变量(TypeVariable)4. 通配符类型(WildcardType)5. 泛型数组类型(GenericArrayType)Type简介 Type是Java编程语言中所有类型的公共高级接口。它们包括原始类型、参数化类型、数组类型、类型变量和基本类型。 Type接口本身算是一个标记接口不提供任何需要复写的方法。 Type分类 Type分类 Type分类名称Type类型描述举例原始类型ClassJava类、枚举、数组、注解、所有基本数据类型String、Date、Integer、int、boolean 等参数化类型ParameterizedType参数化类型泛型类型ListString、MapInteger,String、ListT、List?、List? extends Number、List? super Number 等类型变量TypeVariable泛型符号不包括通配符T、K、V、E 等通配符类型WildcardType通配符?、? extends Number、? super Number 等泛型数组类型GenericArrayType泛型数组List?[]、ListT[]、ListString[]、List? extends Number[]、T[] 等 获取Type JDK的Class、Field、Method类提供了一些列的获取类型的相关方法。 可参考文章Java中如何获取泛型类型信息
- 原始类型(Class) 原始类型的Type实现类为Class。这个类型与泛型无关其它4个类型都和泛型相关。 原始类型主要包括Java类、枚举、数组、注解、所有基本数据类型。 示例 public class TypeTest {private String string;private Integer integer;private long lon;private int[] intArr;public static void main(String[] args) throws Exception {System.out.println(TypeTest.class.getDeclaredField(string).getGenericType() instanceof Class ? String是原始类型 : String不是原始类型);System.out.println(TypeTest.class.getDeclaredField(integer).getGenericType() instanceof Class ? Integer是原始类型 : Integer不是原始类型);System.out.println(TypeTest.class.getDeclaredField(lon).getGenericType() instanceof Class ? long是原始类型 : long不是原始类型);System.out.println(TypeTest.class.getDeclaredField(intArr).getGenericType() instanceof Class ? int[]是原始类型 : int[]不是原始类型);} }输出 String是原始类型 Integer是原始类型 long是原始类型 int[]是原始类型2. 参数化类型(ParameterizedType) 参数化类型的Type实现类为ParameterizedType。 参数化类型也就是泛型类型。 源码 public interface ParameterizedType extends Type {Type[] getActualTypeArguments();Type getRawType();Type getOwnerType(); }方法 getActualTypeArguments获取实际类型参数的Type集合getRawType获取声明此类型的类或接口的TypegetOwnerType如果声明此类型的类或接口为内部类这返回的是该内部类的外部类的Type也就是该内部类的拥有者 示例 public class TypeTestT {private MapInteger,String map;private ListString list1;private ListT list2;private List? list3;private List? extends Number list4;public static void main(String[] args) throws Exception {System.out.println(TypeTest.class.getDeclaredField(map).getGenericType() instanceof ParameterizedType ? MapInteger,String是参数化类型 : MapInteger,String不是参数化类型);System.out.println(TypeTest.class.getDeclaredField(list1).getGenericType() instanceof ParameterizedType ? ListString是参数化类型 : ListString不是参数化类型);System.out.println(TypeTest.class.getDeclaredField(list2).getGenericType() instanceof ParameterizedType ? ListT是参数化类型 : ListT不是参数化类型);System.out.println(TypeTest.class.getDeclaredField(list3).getGenericType() instanceof ParameterizedType ? List?是参数化类型 : List?不是参数化类型);System.out.println(TypeTest.class.getDeclaredField(list4).getGenericType() instanceof ParameterizedType ? List? extends Number是参数化类型 : List? extends Number不是参数化类型);System.out.println(———————————————————–);ParameterizedType parameterizedType (ParameterizedType) TypeTest.class.getDeclaredField(map).getGenericType();for (Type actualTypeArgument : parameterizedType.getActualTypeArguments()) {System.out.println(getActualTypeArguments 方法返回值有 actualTypeArgument.getTypeName());}System.out.println(getRawType 方法返回值 parameterizedType.getRawType().getTypeName());System.out.println(getOwnerType 方法返回值 (parameterizedType.getOwnerType() ! null ? parameterizedType.getOwnerType().getTypeName() : null));} }输出 MapInteger,String是参数化类型 ListString是参数化类型 ListT是参数化类型 List?是参数化类型 List? extends Number是参数化类型 ———————————————————– getActualTypeArguments 方法返回值有java.lang.Integer getActualTypeArguments 方法返回值有java.lang.String getRawType 方法返回值java.util.Map getOwnerType 方法返回值null3. 类型变量(TypeVariable) 类型变量的Type实现类为TypeVariable。 类型变量急速指的泛型符号不包括通配符。 源码 public interface TypeVariableD extends GenericDeclaration extends Type, AnnotatedElement {Type[] getBounds();D getGenericDeclaration();String getName();AnnotatedType[] getAnnotatedBounds(); }方法 getBounds类型变量对应的上边界。如果没有指定上限返回Object可以有多个getGenericDeclaration获取类型变量所在类的Type。getName获取类型变量在源码中定义的名称getAnnotatedBounds获取注解类型的上限数组 示例 public class TypeTestT {private ListT list2;private List? list3;private List? extends Number list4;public static void main(String[] args) throws Exception {System.out.println(((ParameterizedType)TypeTest.class.getDeclaredField(list2).getGenericType()).getActualTypeArguments()[0] instanceof TypeVariable ? T是类型变量 : T不是类型变量);System.out.println(((ParameterizedType)TypeTest.class.getDeclaredField(list3).getGenericType()).getActualTypeArguments()[0] instanceof TypeVariable ? ?是类型变量 : ?不是类型变量);System.out.println(((ParameterizedType)TypeTest.class.getDeclaredField(list4).getGenericType()).getActualTypeArguments()[0] instanceof TypeVariable ? ? extends Number是类型变量 : ? extends Number不是类型变量);System.out.println(—————————————————————);TypeVariable typeVariable (TypeVariable)((ParameterizedType) TypeTest.class.getDeclaredField(list2).getGenericType()).getActualTypeArguments()[0];for (Type bound : typeVariable.getBounds()) {System.out.println(getBounds 方法返回值有 bound.getTypeName());}System.out.println(getGenericDeclaration 方法返回值 typeVariable.getGenericDeclaration());System.out.println(getName 方法返回值 typeVariable.getName());for (AnnotatedType annotatedType : typeVariable.getAnnotatedBounds()) {System.out.println(getAnnotatedBounds 方法返回值有 annotatedType.getType().getTypeName());}} }输出 T是类型变量 ?不是类型变量 ? extends Number不是类型变量 ————————————————————— getBounds 方法返回值有java.lang.Object getGenericDeclaration 方法返回值class com.joker.test.generic.TypeTest getName 方法返回值T getAnnotatedBounds 方法返回值有java.lang.Object4. 通配符类型(WildcardType) 通配符类型的Type实现类为WildcardType。 源码 public interface WildcardType extends Type {Type[] getUpperBounds();Type[] getLowerBounds(); } 方法 getUpperBounds泛型表达式的上边界表达式中使用extendsgetLowerBounds泛型表达式的下边界表达式中使用super 示例 public class TypeTestT {private ListT list2;private List? list3;private List? extends Number list4;private List? super Number list5;public static void main(String[] args) throws Exception {System.out.println(((ParameterizedType)TypeTest.class.getDeclaredField(list2).getGenericType()).getActualTypeArguments()[0] instanceof WildcardType ? T是通配符类型 : T不是通配符类型);System.out.println(((ParameterizedType)TypeTest.class.getDeclaredField(list3).getGenericType()).getActualTypeArguments()[0] instanceof WildcardType ? ?是通配符类型 : ?不是通配符类型);System.out.println(((ParameterizedType)TypeTest.class.getDeclaredField(list4).getGenericType()).getActualTypeArguments()[0] instanceof WildcardType ? ? extends Number是通配符类型 : ? extends Number不是通配符类型);System.out.println(((ParameterizedType)TypeTest.class.getDeclaredField(list5).getGenericType()).getActualTypeArguments()[0] instanceof WildcardType ? ? super Number是通配符类型 : ? super Number不是通配符类型);System.out.println(———————————————–);WildcardType wildcardType1 (WildcardType)((ParameterizedType) TypeTest.class.getDeclaredField(list4).getGenericType()).getActualTypeArguments()[0];System.out.println(List? extends Number 上边界wildcardType1.getUpperBounds()[0].getTypeName());WildcardType wildcardType2 (WildcardType)((ParameterizedType) TypeTest.class.getDeclaredField(list5).getGenericType()).getActualTypeArguments()[0];System.out.println(List? super Number 上边界wildcardType2.getUpperBounds()[0].getTypeName());System.out.println(List? super Number 下边界wildcardType2.getLowerBounds()[0].getTypeName());} }输出 T不是通配符类型 ?是通配符类型 ? extends Number是通配符类型 ? super Number是通配符类型 ———————————————– List? extends Number 上边界java.lang.Number List? super Number 上边界java.lang.Object List? super Number 下边界java.lang.Number5. 泛型数组类型(GenericArrayType) 泛型数组类型的Type实现类为GenericArrayType。 注意普通类型的数组不属于泛型数组类型如int[]、Long[]、String[]。 源码 public interface GenericArrayType extends Type {Type getGenericComponentType(); }方法 getGenericComponentType返回泛型数组中成员类型 示例 public class TypeTestT {private String[] list;private ListString[] list1;private ListT[] list2;private List?[] list3;private List? extends Number[] list4;private T[] list5;public static void main(String[] args) throws Exception {System.out.println(TypeTest.class.getDeclaredField(list).getGenericType() instanceof GenericArrayType ? String[]是泛型数组类型 : String[]不是泛型数组类型);System.out.println(TypeTest.class.getDeclaredField(list1).getGenericType() instanceof GenericArrayType ? ListString[]是泛型数组类型 : ListString[]不是泛型数组类型);System.out.println(TypeTest.class.getDeclaredField(list2).getGenericType() instanceof GenericArrayType ? ListT[]是泛型数组类型 : ListT[]不是泛型数组类型);System.out.println(TypeTest.class.getDeclaredField(list3).getGenericType() instanceof GenericArrayType ? List?[]是泛型数组类型 : List?[]不是泛型数组类型);System.out.println(TypeTest.class.getDeclaredField(list4).getGenericType() instanceof GenericArrayType ? List? extends Number[]是泛型数组类型 : List? extends Number[]不是泛型数组类型);System.out.println(TypeTest.class.getDeclaredField(list5).getGenericType() instanceof GenericArrayType ? T[]是泛型数组类型 : T[]不是泛型数组类型);System.out.println(——————————————————);System.out.println(ListString[] 数组成员类型((GenericArrayType) TypeTest.class.getDeclaredField(list1).getGenericType()).getGenericComponentType().getTypeName());System.out.println(ListT[] 数组成员类型((GenericArrayType) TypeTest.class.getDeclaredField(list2).getGenericType()).getGenericComponentType().getTypeName());System.out.println(List?[] 数组成员类型((GenericArrayType) TypeTest.class.getDeclaredField(list3).getGenericType()).getGenericComponentType().getTypeName());System.out.println(List? extends Number[] 数组成员类型((GenericArrayType) TypeTest.class.getDeclaredField(list4).getGenericType()).getGenericComponentType().getTypeName());System.out.println(T[] 数组成员类型((GenericArrayType) TypeTest.class.getDeclaredField(list5).getGenericType()).getGenericComponentType().getTypeName());} }输出 String[]不是泛型数组类型 ListString[]是泛型数组类型 ListT[]是泛型数组类型 List?[]是泛型数组类型 List? extends Number[]是泛型数组类型 T[]是泛型数组类型 —————————————————— ListString[] 数组成员类型java.util.Listjava.lang.String ListT[] 数组成员类型java.util.ListT List?[] 数组成员类型java.util.List? List? extends Number[] 数组成员类型java.util.List? extends java.lang.Number T[] 数组成员类型T
- 上一篇: 凉山网站建设杭州模板网站建设系统
- 下一篇: 凉山住房和城乡建设局网站长春微信做网站
相关文章
-
凉山网站建设杭州模板网站建设系统
凉山网站建设杭州模板网站建设系统
- 技术栈
- 2026年03月21日
-
良庆网站建设外贸云网站建设
良庆网站建设外贸云网站建设
- 技术栈
- 2026年03月21日
-
链家网的网站开发费用大概多少钱seo网络推广方法
链家网的网站开发费用大概多少钱seo网络推广方法
- 技术栈
- 2026年03月21日
-
凉山住房和城乡建设局网站长春微信做网站
凉山住房和城乡建设局网站长春微信做网站
- 技术栈
- 2026年03月21日
-
梁山网站建设公司企业网站建设方案投标书
梁山网站建设公司企业网站建设方案投标书
- 技术栈
- 2026年03月21日
-
梁山县城市建设局网站磐安县住和城乡建设局网站
梁山县城市建设局网站磐安县住和城乡建设局网站
- 技术栈
- 2026年03月21日
