Java 实现 - 元类
我的理解是,Java对象模型是3个级别,每个级别描述它下面的级别,因此所有类(它们本身就是对象?)共享一个Meta类。
我的问题是 - 如何在Java中实现构造函数?(或任何其他类方法)我的逻辑说构造函数应该出现在Meta类中,但是由于只有一个Meta类,因此它保留所有可能的构造函数没有任何意义,或者我对此的理解是错误的。
我的理解是,Java对象模型是3个级别,每个级别描述它下面的级别,因此所有类(它们本身就是对象?)共享一个Meta类。
我的问题是 - 如何在Java中实现构造函数?(或任何其他类方法)我的逻辑说构造函数应该出现在Meta类中,但是由于只有一个Meta类,因此它保留所有可能的构造函数没有任何意义,或者我对此的理解是错误的。
在Java中,只有一个元类:类的实例用于表示类和接口的类型。构造函数是在类级别定义的,而不是在元类级别定义的。Class
你的问题对构造函数没有什么特别的:从在metavel上描述类的角度来看,构造函数,“正规方法”和字段的概念是相同的。
所以可以这样想:
Java中的每个类都由一组特定的信息来描述:
为方便起见,此信息在运行时可供您使用 - 这是“反射 API”。
由于 JVM 装入的每个类都提供相同类型的信息,因此将其捆绑在一个名为 的自己的类中。java.lang.Class
所以类的一个实例描述类,另一个实例描述。Class
java.lang.String
Class
my.own.class.Foo
java.lang.Class
本身当然也是一个类 - 因此也存在一个描述类的实例。我认为这就是事情以某种方式递归的地方。Class
Class
摘要:只有一个元类:。元类的多个实例(元实例?)描述各个类 - 包括元类本身。构造函数描述是元类实例的一部分。java.lang.Class