java 中 Type, Class之间的关系。

不是很明白Type 和 Class 之间的关系, Class与对象之间的关系。

阅读 13.1k
3 个回答

Object是基类,所有类的祖宗;
Type是类型,如基本数据类型;
Class是对象,每个类的对象的共性做的抽象。

Class实例化后就是对象,如类A,A.class就是class对象。

Class

public final class Class<T> implements java.io.Serializable,
                              GenericDeclaration,
                              Type,
                              AnnotatedElement {
...
}

Type

public interface Type {
    
    default String getTypeName() {
        return toString();
    }
}
  1. 从Jdk的源码可以看出, TypeClass 实现的一个接口

  2. 每一个实例对象是其类型 class 的一个实例,如:User user = new User(); user 是 User 类的一个实例,其类型为User

  3. Class可以看成是类实例的类,每一个类被加载到JVM中都会产生唯一的一个类实例,记录类型的详细信息,如:User 类被加载到JVM中会产生一个类实例,其类型为Class,可以通过User.class获得这个类实例。

A.class 不是A的字节码文件吗?

Object 是所有类的父类,而我们是用class去描述Object 是什么东西,就像 我是人,人类是所有人的父类,我们用高等动物去描述人类是是什么东西。

Object 的 Type 是 Class

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题