Java Reflection_simple Пример изменения переменных и методов
класс Demotest {Private String name = "123"; public getName () {System.out.println ("public getName" + name); вернуть имя; } private getName2 () {System.out.println ("private getName2" + name); вернуть имя; }}Например, измените значение имени. Как изменить. Как измениться через размышление о Java
Давайте сначала посмотрим, как использовать отражение, чтобы вызвать метод getName
класс <demotest> calzz = demotest.class; constructor ons = clazz.getConstructor (новый класс [] {}); // Это конструктор, чтобы получить объект класса. Объект класса, параметры которых построены. Например: Demotest имеет метод конструктора Public Demotest (String arg0, String arg1) {......}
В настоящее время Constructor Cons = clazz.getConstructor (новый класс [] {string.class, string.class}); Две строки. Cals соответствуют arg0 и arg1 соответственно.
Далее:
Demotest test = (demotest) ons.newinstance (новый объект [] {}); // генерировать соответствующий объект. Параметр Новый объект [] {} является конкретным значением параметра, соответствующего методу конструкции. Как упоминалось ранее: Demotest test = (demotest) ons.newinStance (новый объект [] {"li Che", "Zhang San"}); Следующий:
Method method = clazz.getMethod ("getName", новый класс [] {string.class}); method.invoke (тест, новый объект [] {"wang wu"});В настоящее время вы можете распечатать Wu Wu.
Тогда как изменить значение имени как частное.
1. Получите поле первым,
Field Field = clazz.getDeclaredfield ("имя"); 2. Установите доступный флаг этого объекта на указанное логическое значение. Значение истина указывает, что отраженный объект должен отменить проверку доступа к языку Java при использовании. Значение FALSE указывает на то, что отраженный объект должен выполнять проверку доступа к языку Java.
Field.SetAccessible (true);
3. Измените значение переменной
field.set ("name", "Wang wu");ХОРОШО;
То же самое верно для доступа к частным методам.
Метод метод = clazz.getDeclaredMethod ("getName2"); method.setAccessible (true); method.invoke (тест, новый объект [] {"wang wu"});Используйте GetDeclaredFields для получения частных и общественных защищенных полей
Если вы используете c.getfields (); Вы можете получить только свойства общественного типа
Приведенный выше Java Reflection_simple Пример изменения переменных и методов в частном порядке - это все контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.