在Scala中,我需要实现类似Python元类的东西。在我的情况下,使用元类的目标通常是创建特定基类的所有子类的注册表 - 也就是说,从表示类的字符串到类引用的映射。在Python中,在基类上放置一个元类非常方便,因此每个子类都不需要进行特殊处理。我正在寻找一种类似于Scala的方法。有没有办法模拟元类,或以其他方式完成这项工作?谢谢!
java.lang.Class
加载它,即Class.forName(String fqClassName)
。如果给出Class
的实例,则只有当存在零参数构造函数时才容易实例化,否则您将卷入所有Java反射类型的混乱世界。没有任何东西与Python的元类相似。您所说的注册表可能可以使用自定义类加载器或反射实现。
java.lang.Class
,就可以在其上调用newInstance
。但是,如果您想找到一个类的所有子类,请提出一个Java相关的问题。 - Daniel C. Sobral