对于许多框架开发,我们需要通过从配置文件中读取合格的类名来实例化类。
有不同的内省策略,以及针对它的专用库(如 Objenesis)。
但是,对于没有默认构造函数(重载)的类,如果我们不知道重载构造函数的签名,我相信内省不会起作用。非标准的做法是使用 sun.misc.Unsafe 类来分配。这是我的理解。这是正确的理解吗?
然后有一个问题,因为超类不是通过使用 Unsafe 来实例化的。但我认为 Unsafe 是最接近 C 代码“new”操作符调用的,至少是其中的一部分。
所以问题是,当我们拥有的唯一信息是类的限定名(当然,它存在于类路径中的某处! )