参数化类型是什么意思?

此链接指出以下内容:

具有实际类型参数的generics类型的实例化称为参数化类型。 示例(参数化类型):

Collection coll = new LinkedList();

那么什么是参数化类型?

  • Collection
  • LinkedList

它们都是参数化类型:将其他类型作为参数的类型。

在表达式的两边有不同类型的事实是无关紧要的,并且与多态行为有关,即因为LinkedListCollection的子类型。

参数化类型通常是一个处理其他对象而没有兴趣的类,它是什么类型。 可以使用符号“name”定义类型,然后在创建类的实例时传递。

例如:

 class MyClass { private T obj; public MyClass(T obj) { this.obj = obj; } public int getId() { return obj.hashCode(); } } 

在上面的示例中, MyClass包装任何类型的对象,并使用此方法始终存在的事实执行其方法hashCode()

以下是此类的使用方法:

int sid = new MyClass("aaaa").hashCode();

请注意,您不能说new MyClass(123) :使用参数String创建对象的事实决定了构造函数参数的类型。

回到您的示例Collection表示“字符串集合”。 这意味着您无法将其他类型的对象添加到此集合中。

似乎generics类型和参数化类型是同义词。 但是,将Box称为generics类似乎是不对的,因为在单词意义上不再是通用的。 可能很可能:

generics类型是具有正式类型参数的声明

 class Box { .. } 

Box是通用类型

参数化类型是具有实际类型参数/ s的声明

 Box b; 

Box是参数化类型

原始类型是generics类型的声明,没有实际类型参数/ s。

 class Box { .. } Box b; 

Box是原始类型

两种用途都是收集

 Collection LinkedList 

这里是参数化类型, String是使用的类型。

ParameterizedType表示参数化类型,例如Collection。

参数化类型在reflection方法第一次需要时创建,如此包中指定的那样。 创建参数化类型p时,将解析p实例化的generics类型声明,并递归创建p的所有类型参数。 有关类型变量创建过程的详细信息,请参阅TypeVariable。 重复创建参数化类型无效。

实现此接口的类的实例必须实现equals()方法,该方法等同于共享相同generics类型声明且具有相同类型参数的任何两个实例。