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