我不确切知道如何定义我的疑问所以如果问题已经被问到,请耐心等待。
假设我必须动态实例化一个对象。这个对象肯定是已知的,不可变的类A的子类的实例。我可以动态地获取特定的实现类。
使用反射是否更好,就好像我对目标类一无所知,或者更喜欢/可能做类似的事情:
A obj = (Class.forName("com.package.Sub-A")) new A();
其中Sub-A extends A
?目的是避免反思开销时间......
答案 0 :(得分:1)
通常这是通过
完成的Class.forName("com.package.Sub-A").getConstructor(param types).newInstance(param values)
为了避免反射overherad,你只需缓存构造函数对象。