Java实现 - 元类

Shm*_*opy 12 java metaclass

我理解它的方式,Java对象模型是3个级别,每个级别描述它下面的级别,因此所有类共享一个Meta类(它们本身就是对象?).

我的问题是 - 如何用Java实现构造函数?(或任何其他类方法)我的逻辑说构造函数应该出现在Meta类中,但由于只有一个Meta类,所以它保留所有可能的构造函数没有任何意义,或者我对此的理解是全部错误..

Ósc*_*pez 14

在Java中有一个元类:类的实例Class用于表示类和接口的类型.构造函数是在类级别定义的,而不是在元类级别定义的.


A.H*_*.H. 8

你的问题没有针对构造函数的特殊目标:从描述元级别的类的角度来看,构造函数,"常规方法"和字段都有相同的概念.

所以想一想:

  • Java中的每个类都由一组信息描述:

    • 班级名称
    • 超类
    • 实现的接口
    • 构造函数及其签名列表
    • (静态和非静态)方法及其签名的列表
    • (静态和非静态)字段及其类型的列表
  • 为方便起见,您可以在运行时使用此信息 - 这是"反射API".

  • 由于JVM加载的每个类都有相同类型的信息,因此它捆绑在一个名为的自己的类中java.lang.Class.

  • 所以,一个实例类的Class描述类java.lang.String,另一个实例Class介绍my.own.class.Foo.

  • java.lang.Class本身当然也是一类-因此还存在一个实例Class描述类Class.而且我认为这是事情以某种方式递归的地方.

简介:只有一个元类:java.lang.Class.元类的多个实例(元实例?)描述了各个类 - 包括元类本身.构造函数描述是元类实例的一部分.