![](/img/trans.png)
[英]What is the difference between Class<? extends T> and Class<? extends ?> in Java?
[英]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
类的实例代表一辆自行车。 它可能有pedal
和turn
类的方法,也有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.