繁体   English   中英

类之间的区别 <? extends A> 与只是一个

[英]Difference between Class<? extends A> vs just A

Class<? extends A> classB

VS

A classB

这有什么区别? 仅仅是第一个是Class的实例,第二个是实际Object的实例吗?

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

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

类型的变量A指的实例A 如果您在类A声明了一个称为foo的非静态方法,则可以使用此变量直接调用foo

yourVariable.foo();

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

看到这里的区别了吗? Class<? extends A> Class<? extends A>是有点像一个“元类型”,它的实例包含有关类型的信息(此类型可以是A或一个子类A ),而A是你声明的类型。 A的实例表示该类建模的任何对象。 Bicycle类的实例代表一辆自行车。 它可能有pedalturn类的方法,也有durability领域。 Class<? extends Bicycle>的实例 Class<? extends Bicycle>会告诉您这样的事情:在Bicycle类中,有一个字段称为“ durability ,而有一种方法称为“ pedal

基本上,“ meta”是此处的关键字。 Class是代表类的类。

首先

Class<? extends A> classB

定义一个类型为Class的成员,该成员表示正在运行的Java应用程序 Class 中的类和接口

所以你可以写

classB = A.class;
classB = AExtended.class;

第二个

A classB

定义类型A的成员,因此您可以编写

classB = new A();
classB = new AExtended();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM