Java反射-类型系统

在Java的反射API和类型系统中,这些术语代表不同类型的描述和表示。让我们逐一解释这些概念:

  1. 原始类型 (Raw Type):
    原始类型是指直接声明的类型名称,不包括任何泛型参数。例如,ListSetMap等都是原始类型。在Java 5之前,没有泛型,所以只有原始类型。

  2. 参数化类型 (Parameterized Type):
    参数化类型是指包含了泛型参数的类型。它通过在原始类型后面加上尖括号 <...> 及其内部的类型参数来指定。例如,List 和 Map 是参数化类型。这些类型表示了一个集合应该包含的元素的类型。

  3. 泛型数组类型 (Generic Array Type):
    泛型数组类型是指包含泛型参数的数组类型。例如,String[] 是一个原始数组类型,而 T[] 则是一个泛型数组类型,其中 T 是一个类型变量。

  4. 类型变量 (Type Variable):
    类型变量是一个代表泛型参数的标识符。它在声明泛型类或接口时使用,用于代表一种类型,但在具体使用时才确定具体类型。类型变量通常用大写字母表示,例如 TEKV 等。

  5. 通配符类型 (Wildcard Type):
    通配符类型用于表示不确定的类型,通常用于方法参数或返回类型中,以提供更大的灵活性。通配符类型有两种形式:

    • 无界通配符 (?),表示任意类型。
    • 有界通配符 (? extends T 或 ? super T),表示类型是 T 或其子类型(对于 extends),或是 T 或其超类型(对于 super)。
  6. 基本类型 (Primitive Type):
    基本类型不是类类型,而是Java语言的基本数据类型,包括 byteshortintlongfloatdoublecharboolean。这些类型不是通过类来表示的,而是语言内置的类型。

在Java的反射API中,Type 接口是所有这些类型的超接口。ParameterizedTypeWildcardTypeGenericArrayType, 和 TypeVariable 都是 Type 接口的子接口,分别代表不同的类型系统概念。使用反射API,你可以在运行时检查和操作这些类型信息。

你可能感兴趣的:(java,开发语言)