Какой лучший способ создания экземпляра Java-класса с учетом производительности, отражения или ссылки на конструктор? - PullRequest
0 голосов
/ 04 ноября 2019

Я попал в ситуацию, когда я могу использовать отражение для получения объекта-конструктора, а затем использовать этот конструктор для создания экземпляра класса или использовать ссылку на конструктор для его создания. Я хотел знать, что лучше с точки зрения производительности. Я знаю, что доступ к методу с отражением дает меньшую производительность, чем прямой доступ к нему, но если я использую ссылку на конструктор, то он должен создать динамический анонимный тип для получения нужного мне экземпляра. Какая справка по Reflection или Method лучше?

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();
      }
}

На самом деле существует так много Компонентов, и я буду знать только, какой компонент создать во время выполнения. Количество компонентов будет расти по мере появления новых требований. Итак, я ограничен в использовании одного из вышеперечисленных методов, я не могу использовать непосредственное создание объекта с помощью оператора new. Итак, что лучше среди двух альтернатив?

...