考虑到性能、反射或构造函数引用,哪种实例化java类的方法更好?
我最终遇到了这样一种情况:我可以使用反射来获取构造函数对象,然后使用该构造函数来实例化一个类,或者我可以使用构造函数引用来实例化它。我想知道哪一个性能更好。我知道使用反射访问方法的性能比直接访问低,但是如果我使用构造函数引用,那么它应该创建一个动态匿名类型来获取我想要的实例。哪一个是更好的反映或方法参考考虑到性能、反射或构造函数引用,哪种实例化java类的方法更好?,java,reflection,method-reference,Java,Reflection,Method Reference,我最终遇到了这样一种情况:我可以使用反射来获取构造函数对象,然后使用该构造函数来实例化一个类,或者我可以使用构造函数引用来实例化它。我想知道哪一个性能更好。我知道使用反射访问方法的性能比直接访问低,但是如果我使用构造函数引用,那么它应该创建一个动态匿名类型来获取我想要的实例。哪一个是更好的反映或方法参考 interface ConstructorRef { public abstract Component getInstance(); } class Component1 imp
interface ConstructorRef {
public abstract Component getInstance();
}
class Component1 implements Component {
}
class Main {
public static void main(String[] args) {
ConstructorRef reference = Component1::new;
Component component = reference.getInstance();
Class<? extends Component> classObj = Component1.class;
Constructor<? extends Component> constructorObj = classObj.getConstructor();
Component component1 = constructorObj.getInstance();
}
}
接口构造函数ref{
公共抽象组件getInstance();
}
类Component1实现组件{
}
班长{
公共静态void main(字符串[]args){
ConstructorRef reference=Component1::new;
Component=reference.getInstance();
类非反射(本机)way总是比reflective way性能更好。我知道,但正如我之前所说的,通过编码需求,我只能使用reflection或method reference。我将创建一些常量,将构造函数分组为一个块。在运行时,我应该能够根据常量I来决定我需要哪些对象因此,我不能使用直接对象实例化。构造函数引用是一种非反射的方式。因此在大多数情况下,它将比反射操作更快或更符合标准。此外,它还提供了关于类型和异常的额外安全性。“方法引用”,如<代码>组件1::新的< /代码>,它只是通往<代码>的快捷方式()。->新组件1()
因此,它只是用另一种方法包装的构造函数调用。我尝试使用反射和构造函数引用来测试实例创建的性能。但结果令人困惑。当我尝试使用一个线程,一个接一个地使用这两种方法实例化1000个对象时,反射的性能似乎更好。但是如果我多次重复实例创建(一个循环体将通过两个方法为每个方法创建1000个对象),现在我得到了不同的结果。构造函数引用方法只在第一次时滞后于第二次,似乎构造函数引用比反射快。(参见下一条注释)