Java String.class的类型是Object.class的子类型吗?

Java String.class的类型是Object.class的子类型吗?,java,inheritance,Java,Inheritance,在Java中,类对象是否与它们所表示的类具有相同的继承关系?class属性始终返回一个class对象。类类(怪异)有一个通用参数。泛型参数类型是子类 Class<String> stringClass = String.class; Class<Object> objectClass = Object.class; Class-stringClass=String.Class; Class objectClass=Object.Class; 因为对于泛型,Type不是

在Java中,类对象是否与它们所表示的类具有相同的继承关系?

class属性始终返回一个
class
对象。
类(怪异)有一个通用参数。泛型参数类型是子类

Class<String> stringClass = String.class;
Class<Object> objectClass = Object.class;
Class-stringClass=String.Class;
Class objectClass=Object.Class;

因为对于泛型,
Type
不是
Type
的超类型(请参阅),这意味着答案是“否”。
Class
Java中的对象都是相同的类


您可以看出这一点,因为如果查看Javadoc,您可以看到

否,只有一个类的名称为
class
。String.class是类的实例,也是Object.class。

类不扩展类的原因是,即使Y扩展了X,对于任何泛型类型G,G也不扩展G

你可能想在FAQ等中找到这一点。一袋苹果不是一袋水果,即使苹果是一种水果;因为您可以向后者添加任何水果,但只能向前者添加苹果。

尝试以下代码:

boolean answer = Object.class.isAssignableFrom(String.class);
System.out.println(answer); // true!
然而:

Class<Object> string = String.class; <-- compile-time error
Class<? extends Object> string = String.class; <-- it's ok 

Class string=string.Class 如果我正确理解你的问题,情况就不是这样了。表示
java.lang.String
类以及任何其他类的对象始终属于
java.lang.class


请记住,
java.lang.Class
定义为final,因此您不能将其子类化。

所有类对象都是类的实例

如果想知道类的层次结构,可以调用getSuperClass()和getInterfaces()


注意:您可能需要递归调用这些函数来获取所有的超类和接口。

否,泛型参数类型不是子类;它们都是同一个类,由于类型擦除,一旦编译器完成了它的工作,泛型参数就不存在了。谢谢你能把我的想法用文字表达出来。我的脑子不太正常。是时候喝点脑汁了。。。