Здравствуйте, я хотел бы знать, как я могу изменить значение следующей константы (например) с помощью метода.
private static double PIVA=0.16;
Редактировать: я неправильно выразился, извините. Я неправильно использовал слово «константа», я хотел сослаться на эту «статическую» переменную. Он определяется в начале класса.
Спасибо за ответы!
То, что у вас есть, не является константой, это просто статическая переменная. Чтобы быть константой, он должен быть определен с модификатором
final
:Будучи константой, ее значение не может быть изменено .
Представьте, что поле находится в классе со следующим определением (сохранив его в том виде, в котором вы его объявили в своем примере).
Если вы хотите изменить его значение, вы можете сделать это с помощью отражения. Вам нужно знать имя поля, которое вы хотите изменить, а затем все остальное будет простым использованием отражения, например:
Мы создадим метод для выполнения примера:
Вывод программы:
Однако, если бы это была истинная константа , то есть поле помечено как
final
, мы бы увидели исключение:Вывод будет:
Теперь имейте в виду, что это
Field#setAccessible
не всегда будет работать. Это связано с тем, что в некоторых средах выполнения есть SecurityManager , который обеспечивает безопасность приложения. В рамках безопасности он предотвращает изменение полей путем отражения для предотвращения атак. Это происходит, например, при выполнении апплета.Ответ перед изменением заголовка.
¿Cómo cambiar el valor de una constante?
Чтобы
java
определить константу, используйтеfinal
И если вы определяете его как константу, нет смысла динамически изменять его значение.