Java:当您了解超类时反思强制转换

时间:2012-07-11 08:57:49

标签: java reflection downcast

我不确切知道如何定义我的疑问所以如果问题已经被问到,请耐心等待。

假设我必须动态实例化一个对象。这个对象肯定是已知的,不可变的类A的子类的实例。我可以动态地获取特定的实现类。

使用反射是否更好,就好像我对目标类一无所知,或者更喜欢/可能做类似的事情:

A obj = (Class.forName("com.package.Sub-A")) new A();

其中Sub-A extends A?目的是避免反思开销时间......

1 个答案:

答案 0 :(得分:1)

通常这是通过

完成的
Class.forName("com.package.Sub-A").getConstructor(param types).newInstance(param values)

为了避免反射overherad,你只需缓存构造函数对象。