Предположим, вы хотите создать экземпляр класса MyObject
, используя конструктор, который принимает один аргумент типа String
. С new
:
MyObject myObject = new MyObject("constructor-arg1");
С отражением:
Constructor constructor = MyObject.class.getConstructor(String.class);
MyObject myObject = (MyObject) constructor.newInstance("constructor-arg1");
(пример украден у http://tutorials.jenkov.com/java-reflection/constructors.html)
Должно быть понятно, что первое более читабельно и быстрее печатается. Кроме того, размышление часто мучительно медленно. С другой стороны, отражение позволяет создавать экземпляры объектов, не зная их класса во время компиляции.
В заключение, используйте отражение только тогда, когда у вас нет других альтернатив ...