Пусть MyClass
будет классом, представленным этим Java-кодом:
public MyClass
{
private String foo;
private Integer bar;
public MyClass(byte[] contents) { ... }
}
Пусть myConstructor
будет следующим экземпляром конструктора:
Constructor myConstructor = MyClass.class.getDeclaredConstructor(byte[].class);
У меня следующий вопрос
Использует ли этот код отражение?
byte[] contents = new byte[]{0,1,2};
MyClass myInstance = myConstructor.newInstance(contents);
или эквивалентен, когда экземпляр myConstructor
создан, следующему коду?
byte[] contents = new byte[]{0,1,2};
MyClass myInstance = new MyClass(contents);
Отношение эквивалентности, о котором я думаю, заключается в том, что .newInstance(byte[] contents)
имеет прямой доступ к конструктору так же, как и new
, и единственная операция отражения - это поиск конструктора.
С уважением