Моя программа имеет класс, который имеет большое количество полей. Мне нужно создать новый экземпляр этого класса из двух ранее существующих экземпляров. Он будет произвольно выбирать, какие поля он получает из того из двух предыдущих экземпляров.Предоставление значений полей без указания имен полей
Очевидно, что я мог бы просто сделать кучу из них:
if(random.nextBoolean())
this.value = a.value;
else:
this.value = b.value;
Однако, я всегда был заинтригован некоторыми из методов, найденных в ClassName.class. Я пытался исследовать это раньше, но мне никогда не удавалось. Итак, позвольте мне показать вам, что я хотел бы сделать:
for(int i = 0; i < Specimen.class.getDeclaredFields().length; i++){
if(random.nextBoolean())
this.fields[i] = a.fields[i];
else
this.fields[i] = b.fields[i];
Это мое понимание того, что это не возможно, с отражением, есть другой способ?
Это возможно с отражением. Вам нужно будет сначала изменить поле на доступное, хотя (если оно личное). – Steven
Да, спасибо Стивен. В другом вопросе stackoverflow они говорили, что это невозможно с отражением почти в одном и том же вопросе. – csga5000