java - 类之间的区别<?扩展 A> 与仅 A

标签 java generics

Class<? extends A> classB

对比

A classB

这里有什么区别?难道只是第一个是 Class 的实例,第二个是实际 Object 的实例?

最佳答案

Class<? extends A>A完全是两种不同的类型。

Class<? extends A> 类型的变量包含有关的信息。该类可以是 A或任何扩展 A 的类,取决于变量的值。您可以使用Class<? extends A>做的事情变量包括:获取类中声明的所有字段名、获取类中声明的所有方法名、获取类的父类(super class)等等。

A 类型的变量引用 A 的实例。如果您声明了一个名为 foo 的非静态方法在类里面A ,然后您可以调用foo直接使用此变量:

yourVariable.foo();

如果yourVariable,则不能直接执行此操作类型为Class<? extends A> .

看到这里的区别了吗? Class<? extends A>有点像“元类型”,其实例包含有关类型的信息(此类型可以是 AA 的子类),而 A是您声明的类型。 A 的一个实例代表类所模仿的任何事物。 Bicycle 的一个实例类代表一辆自行车。它可能有类似 pedal 的方法和turn和类似 durability 的字段。 Class<? extends Bicycle> 的一个实例会告诉你这样的事情:在 Bicycle 类中,有一个名为 durability 的字段。 ,并且有一个名为 pedal 的方法.

基本上,“meta”是这里的关键字。 Class是一个代表一个类的类。

关于java - 类之间的区别<?扩展 A> 与仅 A,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51779481/

相关文章:

c# - 创建 C# 泛型类的实例

generics - 存在主义和废弃你的样板

java - Java 中的嵌套类型参数

java - 计算不带空格、逗号或句点的输入数 - Java

java - 转换为 Comparable,然后进行比较

java:统一处理子类

scala - (泛型)之间有什么区别吗

java - 如果数据库中的值为 1,则 XSL 复选框显示已选中

java - XML 编码器还是二进制编码器? - Eclipse Milo(客户端-服务器)

java - 我如何等待 DRMAA 的外部启 Action 业?