В Java можно добавить переменную-член к классу, используя отражение во время выполнения? - PullRequest
0 голосов
/ 03 июня 2018

Я видел примеры Java, которые используют отражение для изменения значений переменной-члена вне класса во время выполнения.Это может быть сделано для частных и даже окончательных полей.Может быть, есть способ добавить поле в класс во время выполнения, используя отражение?

Я нашел очень похожий вопрос: Может ли класс Java добавить метод к себе во время выполнения?

Ответ - да, это возможно с помощью пользовательских загрузчиков классов или инструментов манипулирования байтовым кодом.

Ответы [ 3 ]

0 голосов
/ 03 июня 2018

Это невозможно, на самом деле идея «добавления полей во время выполнения» даже не имеет смысла.Java является статическим языком, который означает, что для того, чтобы ваш код компилировался, информация о типах для всех полей класса должна быть известна во время компиляции, что означает, что эти поля должны существовать во время компиляции.Если вы создаете класс, подобный

class Person {
    String name;
    int age;
}

, а затем где-то в своем коде, вы ссылаетесь на person.height, ваш код даже не скомпилируется, потому что поле height не существует.Так что даже если бы вы могли добавить поле height во время выполнения, в какой момент ваш код даже не будет компилироваться?Вот почему я говорю, что это невозможно.

0 голосов
/ 03 июня 2018

Использование отражения: НЕТ, но возможно добавить поведение до некоторой степени, используя шаблоны проектирования.

См. Документ ниже. ссылка

Надеюсь, это поможет вам.

0 голосов
/ 03 июня 2018

Насколько я знаю, ответ - нет.Отражение должно отражать данные, а не изменять их.

...